Глюки JavaScript при работе с файловой системой

  • Автор темы Автор темы Saintly
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Saintly

Участник
Топикстартер
Сообщения
8
Реакции
0
Добрый день уважаемые форумчане.
Столкнулся со следующей проблемой: Некоторые операции с файловой системой регулярно сбоят (в 2х случаях из 10). Причем на элементарных операциях:
PHP:
//копирование документа
var myDoc = app.activeDocument;
var Work_folder_indd  = "\\какаято папка";
myDoc.save (new File (Work_folder_indd+myDoc.name));
Вроде элементарная операция, но иногда затыкается...

Или операция по копированию всех линков, та же беда - бывает несколько линков не скопировано:
PHP:
for (i = 0; i < myDoc.links.length; i++) {
	currLink = myDoc.links[i];
	if (currLink.status == LinkStatus.LINK_MISSING)
		continue;
	if (currLink.status == LinkStatus.LINK_EMBEDDED)
		currLink.unembed();
	myFile = new File (myDoc.links[i].filePath);
        myNewFile = myFile.copy (Work_folder_links + "/" + myFile.name);
}

С пермишенами все в порядке - копирую с локальной машины на локальную машину.

Сейчас ввиду глючности данных кусков пришлось собрать конструкцию на базе "cmd" файла, но это не выход...
 
Ответ: Глюки JavaScript при работе с файловой системой

Кстати заметил зависимость от размера файла, что с сохранением индизайновского файла, что с с копированием линков. Чем больше размер тем больше вероятность сбоя.

Ощущение, что идет ошибка изза отложенной записи. Или InDesign и Windows не могут поделить ресурсы... Во всяком случае так кажется...
 
Ответ: Глюки JavaScript при работе с файловой системой

Смущает это:
var Work_folder_indd = "\\какаято папка";
Папка сетевая?
 
Ответ: Глюки JavaScript при работе с файловой системой

vbatushev сказал(а):
Смущает это:
var Work_folder_indd = "\\какаято папка";
Папка сетевая?

Пробовал и сетевой папкой и с локальной машиной - ошибка регулярно выскакивает.

И еще... Оказывается я такой не один. Пообщался с несколькими американцами (коллеги по работе). Так вот у них оказывается была такая же беда, только на Macintosh. В итоге они писали подобные куски на AppleScript. Как они мне сказали модули JavaScript отвечающие за работу с файловой системой (File, Folder) иногда конфликтуют с операционкой (парадокс!!!). И дали совет сделать все через FileSystemObject на VBScript (так как я сижу под форточками).

Проверю отпишусь :)
 
Ответ: Глюки JavaScript при работе с файловой системой

У меня ни разу это не встречалось.
Пишу путь в нотации:
"/c/моя папка/мой файл.ext"
 
Ответ: Глюки JavaScript при работе с файловой системой

А меня смущает, что нет разделителя между папкой и файлом.

2 Saintly
File().copy вернёт true при удачном копировании, т.е. проверяйте что в myNewFile.

копировал, ренеймил, удалял файлы и ничего похожего не замечал. чудес не бывает - либо permission'ы либо ошибка в коде.
 
Ответ: Глюки JavaScript при работе с файловой системой

Я на Мас_е не замечал сбоев в файловых операциях. Я обычно проверяю что возвращает new File. Еще мне не очень нравится, что в цикле на каждой итерации создается объект File, который остается жить до завершения задачи. А если линков будет 500? Будет создано 500 объектов? Я, конечно, понимаю, про сегодняшние объемы памяти и отсутствие ограничений на количество открытых файлов, но все это про саму ОС, а вот про память доступную JS и количество файлов я не знаю. Далее, если предположить, что метод File.copy выполняется системой асинхронно, то объект myFile может измениться раньше, чем начнется операция копирования... Не айс. ;-) Что касается метода myDoc.save я бы создал объект файл отдельно и проверил уж не null ли он.

AirGraph.
 
Ответ: Глюки JavaScript при работе с файловой системой

может так надо писать:
var Work_folder_indd = Folder("/c/gazeta/ob");
 
Статус
Закрыто для дальнейших ответов.