write to txt. В определенную строку!!!
Здравствуйте!
Создаю эту тему второй раз, так как в первой мне не смогли ответить. Мне необходимо сделать запись в txt файл в определённую строку (в конец) Вот код, который считывает определённую строку отмеченную знаком А в неё мне нужно сделать запись. Именно в текстовик! Так как запись будет читать другая программа код открывает текстовик данного вида 1015\t9999\t10x15 3000\t8789\t10x15 и т.д и проставляет вместо первой табуляции любой знак ("DoneMark") далее переходит на след строку, и удаляя старый, снова ставит знак для того чтобы отметить выполняемую в данный момент строку У меня возникла острая нужда дописать в текущую выполняемую строку через знак \t один символ. чтобы получилось данное: 1015\t9999\t10x15\tV Прошу помощи у знатоков. var separator ='\t' var doneMark ='>' istFile.open("e", "TEXT", "????"); // ищем последнее выполненную строчку, отмеченную знаком ">" do { var previousPos = listFile.tell(); currentLine = listFile.readln(); var currentPos = listFile.tell(); var seekDelta = currentPos - previousPos - currentLine.length; } while(!listFile.eof && currentLine.search(doneMark) < 0); // запоминаем, добрались ли мы до конца файла (т.к. в дальнейшем будем пользоваться сдвигом, и .eof может поменять значение) var endOfFile = false; if (listFile.eof) endOfFile = true; if (currentLine.search(doneMark) > 0) { // если в файле найден знак ">" // заменяем его на пробел var signPos = currentLine.indexOf(doneMark) - currentLine.length - seekDelta; listFile.seek(signPos, 1); listFile.write(separator); }; // если мы уперлись в конец файла, сдвигаемся в начало if (endOfFile) { listFile.seek (0,0); previousPos = 0 } else { // если не уперлись в конец файла, сдвигаемся в конец строки previousPos = currentPos; listFile.seek(- signPos - 1, 1);}; // считываем строчку, с которой будем работать currentLine = listFile.readln(); currentPos = listFile.tell(); seekDelta = currentPos - previousPos - currentLine.length; // заменяем в рабочей строке пробел на знак ">" var signPos = currentLine.indexOf(separator) - currentLine.length - seekDelta; listFile.seek(signPos, 1); listFile.write(doneMark); // где-то вот здесь необходимо сделать запись // закрываем текстовик listFile2.close(); Пробовал сделать так var XPos =currentLine.length; listFile.seek(XPos, 1); listFile.write('V'); Но пишет не совсем в конец строки |
Цитата:
а какой браузер ты используешь или какой движок? Где выполняется вообще этот код? что такое istFile ? |
это не браузерный js
Выполняется он в Ps (Да и это не важно собственно) ListFile это txt |
А, это дополняшка на фотошоп)? ясно) щас посмотрим код.
upd1: так если хочешь чтобы я те помог пришли ВЕСЬ код я запущу его в фотошопе и посмотрю что не так. п.с. что у тя не работает то кстати? в чем прбелма то? |
Все работает, все ок.
Нужно дописать в txt символ. см выше описание() я пришлю код который отвечает за открытие txt, так как вся у меня проблема с ним. Не могу дописать символ в строку txt Сам код ничего не значит для Ps без файлов, фотографий, путей и psd исходников. Всё я присылать не вижу смысла, так как самое нужное ниже: Тут нужен хотя бы тулкит вот код var workFolderName = 'D:\\work\\Script'; var listFileName = 'VAR.txt'; var separator = '\t'; var doneMark = '>' var currentLine = ""; var workFolder = new Folder(workFolderName); var listFile = File (workFolder+ "/" + listFileName); / открываем тектовый файл для редактирования listFile.open("e", "TEXT", "????"); // ищем последнее выполненную строчку, отмеченную знаком ">" do { var previousPos = listFile.tell(); currentLine = listFile.readln(); var currentPos = listFile.tell(); var seekDelta = currentPos - previousPos - currentLine.length; } while(!listFile.eof && currentLine.search(doneMark) < 0); // запоминаем, добрались ли мы до конца файла (т.к. в дальнейшем будем пользоваться сдвигом, и .eof может поменять значение) var endOfFile = false; if (listFile.eof) endOfFile = true; if (currentLine.search(doneMark) > 0) { // если в файле найден знак ">" // заменяем его на пробел var signPos = currentLine.indexOf(doneMark) - currentLine.length - seekDelta; listFile.seek(signPos, 1); listFile.write(separator); }; // если мы уперлись в конец файла, сдвигаемся в начало if (endOfFile) { listFile.seek (0,0); previousPos = 0 } else { previousPos = currentPos; listFile.seek(- signPos - 1, 1);}; // считываем строчку, с которой будем работать currentLine = listFile.readln(); currentPos = listFile.tell(); seekDelta = currentPos - previousPos - currentLine.length; // заменяем в рабочей строке пробел на знак ">" var signPos = currentLine.indexOf(separator) - currentLine.length - seekDelta; listFile.seek(signPos, 1); listFile.write(doneMark); // делаем запись в конец currentLine через табуляцию |
меня вот эта строчка интересовала на самом деле
var listFile = File (workFolder+ "/" + listFileName); так ща глянем все просто как 2 пальца об песца var workFolderName = 'C:\\'; var listFileName = 'VAR.txt'; var workFolder = new Folder(workFolderName); var listFile = File (workFolder+ "/" + listFileName); // открываем тектовый файл для редактирования listFile.open("e", "TEXT", "????"); // добавляем в конец однерку listFile.write("1"); // потом добавляем в конец еще и двойку listFile.write("2"); // закрываем файл listFile.close(); |
а, так понял, тепе надо в конец определенной строки, прочитал не внимательно, щас сделаем)
|
Давай так, напишу функцию где указываешь номер строки и символ который туда вбить в конец, норм ?
|
В том то и дело)
текущую строку определяет сам скрипт ( я не знаю какая строка в данный момент обрабатывается, только когда открываю txt и вижу (donemark) на месте первой табуляции) Ты хочешь чтобы я сам указывал номер строки? |
а скажи что ты хочешь?
|
Часовой пояс GMT +3, время: 17:01. |