Что нового

Запись и перезапись строк в txt файле

ssvih

Новичок
Сообщения
35
Репутация
1
Есть txt файл в котором 6 строк

Код:
1.Line1
2.Line2
3.Line3
4.Line4
5.Line5
6.Line6

Как первую строку вырезать что бы файл начинался со второй строки
Код:
2.Line2
3.Line3
4.Line4
5.Line5
6.Line6
а потом записать строку в конец файла
Код:
2.Line2
3.Line3
4.Line4
5.Line5
6.Line6
1.Line1

P.S. 1 строку нужно добавить в буфер для последующей вставки в поисковой запрос!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: Работа с txt

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Работа с txt" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.









Попробуйте так.
Код:
#include <Array.au3>

$aText = StringSplit(StringStripCR(FileRead(@ScriptDir & '\test.txt')), @LF)
_ArrayDisplay($aText, 'До')
$sTemp = $aText[1]
For $i = 1 To $aText[0] - 1
	$aText[$i] = $aText[$i + 1]
Next
$aText[$aText[0]] = $sTemp
_ArrayDisplay($aText, 'После')
$sTemp = ''
For $i = 1 To $aText[0]
	$sTemp &= $aText[$i] & @CRLF
Next
$hFile = FileOpen(@ScriptDir & '\test.txt', 2)
FileWrite($hFile, StringTrimRight($sTemp, 2))
FileClose($hFile)
 

tref777

Новичок
Сообщения
38
Репутация
2
Код:
#include <File.au3>

Dim $list
Dim $ret

For $i = 1 To 6
FileWriteLine('Исходный файл.txt', $i & '.Line' & $i )
Next
$file = FileRead('Исходный файл.txt')
_FileReadToArray('Исходный файл.txt', $list)
For $j = 2 To $list[0]
$ret &=  $list[$j] & @CRLF
Next
$ret &=  $list[1] & @CRLF
FileWriteLine('Результат.txt', $ret)


Мой вариант :smile:
 
Автор
S

ssvih

Новичок
Сообщения
35
Репутация
1
Спасибо madmasles и tref777.
tref777 твой пример создает строки 1.Лайн1 .... а их не нужно создавать ) Нужно менять местами то что есть в файле!
madmasles пример выполняет то что нужно меняет местами записи!
Но не копирует в буфер первую строку!

Решено!!!
Код:
#include <Array.au3>

$aText = StringSplit(StringStripCR(FileRead(@ScriptDir & '\zapros.txt')), @LF)
$sTemp = $aText[1]
ClipPut ($sTemp)
For $i = 1 To $aText[0] - 1
    $aText[$i] = $aText[$i + 1]
Next
$aText[$aText[0]] = $sTemp
$sTemp = ''
For $i = 1 To $aText[0]
    $sTemp &= $aText[$i] & @CRLF
Next
$hFile = FileOpen(@ScriptDir & '\zapros.txt', 2)
FileWrite($hFile, StringTrimRight($sTemp, 2))
FileClose($hFile)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ssvih [?]
Но не копирует в буфер первую строку
Код:
#include <Array.au3>

$aText = StringSplit(StringStripCR(FileRead(@ScriptDir & '\test.txt')), @LF)
_ArrayDisplay($aText, 'Родной текст')
$sFirstLine = $aText[1]
For $i = 1 To $aText[0] - 1
	$aText[$i] = $aText[$i + 1]
Next
ReDim $aText[$aText[0]]
_ArrayDisplay($aText, 'Без 1-ой строки')
ReDim $aText[$aText[0] + 1]
$aText[$aText[0]] = $sFirstLine
_ArrayDisplay($aText, 'C 1-ой строкой в конце')
$sTemp = ''
For $i = 1 To $aText[0]
	$sTemp &= $aText[$i] & @CRLF
Next
$hFile = FileOpen(@ScriptDir & '\test.txt', 2)
FileWrite($hFile, StringTrimRight($sTemp, 2))
FileClose($hFile)
ClipPut($sFirstLine)
MsgBox(64, 'Info', '1-я строка: ' & $sFirstLine & @LF & 'Делайте с ней все, что хотите. :)')
 
Верх