2016-12-23 2 views
1

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

Я нашел сценарии для выполнения следующих

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

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

+4

Читать первую строку и сохранить ее в строку, а затем прочитать остальную часть файла, выводя каждую строку на новую файл. Наконец, напишите первую строку в конце нового файла. Легко, и вы дома вовремя для Cornflakes. –

ответ

3

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

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 автоматически выполнять ту же очистку.

1
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() ..., чтобы сохранить любые текстовые строки в текстовом файле.

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

Смежные вопросы