Переместить первую строку файла .txt добавить в последнюю строку

У меня есть список a.txt, пытающийся переместить первую строку в последнюю строку в Java

Я нашел сценарии, чтобы сделать следующее

  1. Найти «текст» из входного файла и вывести во временный файл. (Я мог бы установить «текст» в строку buffRead.readLine ??), а затем...
  2. удалить файл ориг и переименовать новый файл в ориг?

Пожалуйста, дайте мне знать, что я новичок в Java, но я провел много исследований и не могу найти решение для того, что, как я думал, будет простым скриптом.


person Garanteed Quality    schedule 23.12.2016    source источник
comment
Прочитайте первую строку и сохраните ее в виде строки, затем прочитайте остальную часть файла, выводя каждую строку в новый файл. Наконец, напишите первую строку в конце нового файла. Легко, и ты дома как раз к кукурузным хлопьям.   -  person Tim Biegeleisen    schedule 23.12.2016


Ответы (2)


Поскольку это Java и касается файлового ввода-вывода, это нетривиальная настройка. Сам алгоритм прост, но символы, необходимые для этого, не сразу бросаются в глаза.

BufferedReader reader = new BufferedReader(new FileReader("fileName"));

Это дает вам простой способ прочитать содержимое файла fileName.

PrintWriter writer = new PrintWriter(new FileWriter("fileName"));

Это дает вам простой способ записи в файл. API для этого точно такой же, как System.out, когда вы используете PrintWriter, поэтому я решил использовать его здесь.

На данный момент это просто вопрос чтения файла и повторения его обратно в правильном порядке.

String text = reader.readLine();

Это сохраняет первую строку файла в text.

while (reader.ready()) {
    writer.println(reader.readLine());
}

Пока в reader остается текст, напечатайте строки в writer.

writer.println(text);

Распечатайте строку, которую вы сохранили в начале.

Обратите внимание, что если ваша программа делает что-то еще (и в любом случае это просто хорошая привычка), вы хотите закрыть свои потоки ввода-вывода, чтобы избежать утечки ресурсов.

reader.close();
writer.close();

В качестве альтернативы вы также можете обернуть все это в try-with-resources. для автоматического выполнения той же очистки.

person CAD97    schedule 23.12.2016

Scanner fileScanner = new Scanner(myFile);
fileScanner.nextLine();

Это вернет первую строку текста из файла и отбросит ее, потому что вы ее нигде не храните. Чтобы перезаписать существующий файл:

FileWriter fileStream = new FileWriter("my/path/for/file.txt");
BufferedWriter out = new BufferedWriter(fileStream);
while(fileScanner.hasNextLine()) {
    String next = fileScanner.nextLine();
    if(next.equals("\n") out.newLine();
    else out.write(next);
    out.newLine();   
}
out.close();

Обратите внимание, что таким образом вам придется перехватывать и обрабатывать некоторые IOExceptions. Кроме того, оператор if()... else()... необходим в цикле while(), чтобы сохранить любые разрывы строк в вашем текстовом файле.

Добавьте ту же строку в последнюю строку этого файла, посмотрите на эту ссылку https://stackoverflow.com/a/37674446/6160431

person Sanjit Kumar Mishra    schedule 23.12.2016