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) на месте первой табуляции) Ты хочешь чтобы я сам указывал номер строки? |
а скажи что ты хочешь?
|
например seek меняет позицию каретки tel возвращает текущую позицию каретки. строки разделяются символом \n
и.т.п. |
записать к currentLine в listFile символ
к текущей выполняемой строке в текстовый сделать запись |
Цитата:
![]() |
|
я хочу чтобы в txt было вот это
было так 1010>1012\t10*15 стало так 1010(вместо "\t" стоит ">" следовательно эта строка выполняется)1020\t10*15(а вот тут мне нужен записанный символ) |
Цитата:
например так: у меня есть открытый текстовый файл, я хочу уметь находить а нем определенынй символ, и в конец строки в которой найден этот символ добавлять какое то слово)) как это сделать? вот типа того, я ДО СИХ ПОР не могу понять что ты хочешь. |
ок,
нужно найти в txt определённый символ в строке, и дописать в конец строки в файл символ В том и вопрос, КАК ЗАПИСАТЬ =) |
И ВСЕ)???
а символ этот искомый один раз встречается в txt шнике или много раз)? |
Цитата:
2) найти первый символ переноса строки (\n) идущий от места нахождения искомого символа (из пункта 1). 3) установить каретку перед найденным символом переноса строки (из пункта 2) file.seek(число) 4) написать туда что хотим file.write('это вставиться в позицию каретки') |
Один раз
Это все |
ну что решение помогло? или мне код написать?
|
Лучше напиши, пожалуйста.
|
Часовой пояс GMT +3, время: 13:18. |