本文整理汇总了C++中Directory::getFSysPath方法的典型用法代码示例。如果您正苦于以下问题:C++ Directory::getFSysPath方法的具体用法?C++ Directory::getFSysPath怎么用?C++ Directory::getFSysPath使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Directory
的用法示例。
在下文中一共展示了Directory::getFSysPath方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: deleteDirectory
/*
* Изтрива всички директории в параметрите.
* Root директорият не може да се изтрие.
*/
void CommandPrompt::deleteDirectory(string parameters){
/*
* Извличаме адресите от параметрите.
*/
queue<string> dirPaths = getPaths(parameters);
/*
* Намираме директория по дадения път и викаме deleteFile().
* Ако е NULL извеждаме грешка.
* Ако текущата директория се съдържа в директорията която трием, я применяме на root.
* Root директорията не може да се изтрие.
*/
Directory* dir;
while (!dirPaths.empty()) {
dir = this->determinePathAndGetDir(dirPaths.front());
if (dir != NULL) {
if(currentDir->getFSysPath().find(dir->getFSysPath()) != string::npos){
currentDir = fs.getRoot();
cout << "Current directory now root!" << endl;
}
if (dir == fs.getRoot())
cerr << "Cannot delete root directory!" << endl;
else
dir->deleteFile();
}
else
cerr << "Directory not found!" << endl;
dirPaths.pop();
}
}
示例2: saveConcatenatedFile
/*
* Помощтна функция, за запазване/въвеждане на файлове.
*/
void CommandPrompt::saveConcatenatedFile(string path, string data){
/*
* Ако няма данни и няма подаден адрес за запис връща.
*/
if (path.empty() && data.empty())
return;
/*
* Ако няма данни се въвеждат.
*/
if (data.empty()) {
char line[1000];
string sline;
while (sline != string(".")) {
cin.getline(line, 1000);
sline = line;
if(sline != ".")
data += sline;
}
}
/*
* Ако няма outputFile се извеждат данните, ако има
* се намира/създава директория и се създава вайл в нея.
* Наследява промените по големината на директориите.
*/
if (path.empty())
cout << data << endl;
else {
string fileName = path;
Directory* dir = fs.getRoot();
int pos = path.rfind('/') + 1;
if (pos - 1 != string::npos) {
fileName = "";
while (pos < path.size())
fileName += path[pos++];
pos = path.rfind('/');
path = path.erase(pos, path.size());
dir = this->createNestedDirectories(path);
}
else
dir = currentDir;
if (dir->nameAvailable(fileName)) {
dir->addChild(new TextFile(dir->getFSysPath(),
fs.getNextNumber(),
data,
fileName));
dir->inheritSize(data.size());
}
else {
dir->findFileByName(fileName)->concatData(data);
dir->inheritSize(data.size());
}
}
}
示例3: createLinksInDirectory
/*
* Създава линкове на файловете в подадена директория.
*/
void CommandPrompt::createLinksInDirectory(string parameters){
stack<string> filePaths;
string tempPath;
/*
* Извлича адресите в стек (защото последния адрес е директория).
*/
for (int i = 0; i <= parameters.size(); i++) {
if (parameters[i] == ' ' || i == parameters.size()) {
filePaths.push(tempPath);
tempPath = "";
}
else {
tempPath += parameters[i];
}
}
/*
* Намира директорията. Ако не я намери извежда грешка и връща.
*/
Directory* destinationDir = this->determinePathAndGetDir(filePaths.top());
filePaths.pop();
if (destinationDir == NULL) {
cerr << "Destination directory not found!" << endl;
return;
}
/*
* Намира файловете по адрес и създава линкове към тях в директорията.
*/
TextFile* tempFile;
while (!filePaths.empty()) {
tempFile = this->determinePathAndGetFile(filePaths.top());
if (tempFile == NULL) {
cerr << "File not found!" << endl;
}
else {
destinationDir->addChild(new SymLink(tempFile, fs.getNextNumber(), destinationDir->getFSysPath()));
}
filePaths.pop();
}
}
示例4: createNestedDirectories
/*
* Определя какъв е адреса и го обхожда име по име.
* Ако намери директория която не съществува я създава.
* @return - търсената директория, ако поради някакви причини не се е създала връща root.
*/
Directory* CommandPrompt::createNestedDirectories(string path) {
string currentName;
Directory* result = NULL;
Directory* tempDir = fs.getRoot();
if (path.find('/') == string::npos) {
if ((tempDir = tempDir->findDirByName(path)) == NULL) {
result = new Directory(currentDir->getFSysPath(),
fs.getNextNumber(),
path,
currentDir);
currentDir->addChild(result);
return result;
}
return tempDir;
}
else {
for (int i = 0; i <= path.size(); i++) {
if ((path[i] == '/' || i == path.size()) && !currentName.empty()) {
if (tempDir->findDirByName(currentName) == NULL) {
result = new Directory(tempDir->getFSysPath(),
fs.getNextNumber(),
currentName,
tempDir);
tempDir->addChild(result);
}
tempDir = tempDir->findDirByName(currentName);
currentName = "";
}
else if(path[i] != '/') {
currentName += path[i];
}
}
}
if (result == NULL)
return tempDir;
return result;
}