文件操作 - path_util.cc
返回文件管理
返回主菜单
删除本文件
文件: /root/node_modules/node-pty/src/win/path_util.cc
编辑文件内容
/** * Copyright (c) 2013-2015, Christopher Jeffrey, Peter Sunde (MIT License) * Copyright (c) 2016, Daniel Imms (MIT License). * Copyright (c) 2018, Microsoft Corporation (MIT License). */ #include <nan.h> #include <Shlwapi.h> // PathCombine #include "path_util.h" namespace path_util { const wchar_t* to_wstring(const Nan::Utf8String& str) { const char *bytes = *str; unsigned int sizeOfStr = MultiByteToWideChar(CP_UTF8, 0, bytes, -1, NULL, 0); wchar_t *output = new wchar_t[sizeOfStr]; MultiByteToWideChar(CP_UTF8, 0, bytes, -1, output, sizeOfStr); return output; } bool file_exists(std::wstring filename) { DWORD attr = ::GetFileAttributesW(filename.c_str()); if (attr == INVALID_FILE_ATTRIBUTES || (attr & FILE_ATTRIBUTE_DIRECTORY)) { return false; } return true; } // cmd.exe -> C:\Windows\system32\cmd.exe std::wstring get_shell_path(std::wstring filename) { std::wstring shellpath; if (file_exists(filename)) { return shellpath; } wchar_t buffer_[MAX_ENV]; int read = ::GetEnvironmentVariableW(L"Path", buffer_, MAX_ENV); if (!read) { return shellpath; } std::wstring delimiter = L";"; size_t pos = 0; std::vector<std::wstring> paths; std::wstring buffer(buffer_); while ((pos = buffer.find(delimiter)) != std::wstring::npos) { paths.push_back(buffer.substr(0, pos)); buffer.erase(0, pos + delimiter.length()); } const wchar_t *filename_ = filename.c_str(); for (int i = 0; i < paths.size(); ++i) { std::wstring path = paths[i]; wchar_t searchPath[MAX_PATH]; ::PathCombineW(searchPath, const_cast<wchar_t*>(path.c_str()), filename_); if (searchPath == NULL) { continue; } if (file_exists(searchPath)) { shellpath = searchPath; break; } } return shellpath; } } // namespace path_util
修改文件时间
将文件时间修改为当前时间的前一年
删除文件