Используйте Scripting.FileSystemObject для создания файла в пути, который еще не существует - PullRequest
1 голос
/ 15 декабря 2011

Я пытаюсь создать текстовый файл, используя Scripting.FileSystemObject в JScript. Я не могу понять, как создать файл, если каталог в файле еще не существует. Например:

var fso = new ActiveXObject("Scripting.FileSystemObject");

// Getting a JScript runtime error of "Path not found"
fso.CreateTextFile("\\\\pathA\\pathB\\DirectoryDoesntExistButIWantItTo\\newfile.txt", true);

Я искал повсюду, но кажется, что документация по этому вопросу не аккуратно помещена в одном месте. Например, вот некоторые статьи MSDN, в которых говорится об этом, но не приводятся детали, которые я ищу.

http://msdn.microsoft.com/en-us/library/aa711216(v=VS.71).aspx

http://msdn.microsoft.com/en-us/library/aa242706(v=VS.60).aspx

Другими словами, я стараюсь изо всех сил Google это и не могу найти то, что я ищу. Я не думаю, что это имеет значение; но я пишу этот скрипт в TestComplete 8; но для всех интенсивных целей можно предположить, что я запускаю его в теге script в html-файле IE.

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Если вы собираетесь запустить свой код в TestComplete, вы можете использовать его собственные методы aqFileSystem.CreateFolder и aqFile.Create .Вот пример:

createFile("\\\\pathA\\pathB\\DirectoryDoesntExistButIWantItTo\\newfile.txt");
...
function createFile(fileName)
{
  aqFileSystem.CreateFolder(aqFileSystem.GetFileFolder(fileName));
  aqFile.Create(fileName);
}
3 голосов
/ 15 декабря 2011

Я думаю, что вам нужно вручную создать папку, если она не существует.Если вам нужно беспокоиться только о непосредственной родительской папке, вы можете использовать GetParentFolderName, чтобы помочь:

var fso = new ActiveXObject("Scripting.FileSystemObject");
var path = "\\\\pathA\\pathB\\DirectoryDoesntExistButIWantItTo\\newfile.txt";
var folder = fso.GetParentFolderName(path);

if (!fso.FolderExists(folder))
{
    fso.CreateFolder(folder);
}

fso.CreateTextFile(path, true);
...