2014-02-06 2 views
0

Я написал метод, который выводит массивList в текстовый файл, но по какой-то причине он не печатает на новой строке каждый раз, он печатает все на одной строке. ниже мой код.Как написать каждую строку на новую строку в Java?

private static void writingToFile() { 
     try { 
      BufferedWriter writeArrayList = new BufferedWriter (new FileWriter("D:\\text.txt")); 
      for(StoreCommands s : commandsList){ 
       writeArrayList.write(s + "\n"); 
      } 
      writeArrayList.close(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

Кроме того, на данный момент я должен ввести путь вручную, я хочу, чтобы пользователь, чтобы выбрать, где они хотят, чтобы поместить файл, как я могу это сделать, а? Благодарю.

+0

Изменение '«\ п»' в '«\ г \ п»' –

+0

спасибо, что работал ... Могу ли я вместо того, чтобы добавлять FilePath себя предложите пользователю выбрать один? – user3278130

+0

См. Мой ответ ниже –

ответ

0

Для добавления в файл, создать с помощью:

new FileWriter("D:\\text.txt", true); 

FileWriter общественного FileWriter (String FileName, логического добавления) бросает IOException Создает объект FileWriter дало имя файла с логическим значением, указывающее ли или не добавлять записанные данные.

Параметры fileName - String Системно-зависимое имя файла. append - boolean if true, тогда данные будут записаны в конец файла , а не в начале. Выдает IOException, если указанный файл не найден или возникла какая-либо другая ошибка ввода-вывода. More here

Другой пример:

 FileOutputStream fileOutput = new FileOutputStream("myfile.txt", true); 
     BufferedOutputStream bufferedOutput = new BufferedOutputStream(
       fileOutput); 

     bufferedOutput.write(<your binaries here>); 
0

Как о попытке что-то вроде этого

private static void writingToFile() { 
    try { 
     PrintWriter out = new PrintWriter (new FileWriter("D:\\text.txt")); 
     for(StoreCommands s : commandsList){ 
      out.println(s); 
     } 
     out.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Я предпочитаю PrintWriter, потому что мне нравится Println метод. Вы можете добавить систему. перед всеми вашими утверждениями и печатью вместо записи в файл.

Редактировать, также я предполагаю, что вы правильно называете строку. Вы могли бы вместо этого нужно что-то вроде

 for(StoreCommands s : commandsList){ 
      out.println(s.toString()); 
     } 

Наконец для удовольствия Java8 версии

private static void writeToFile(){ 
    try(PrintWriter out = new PrintWriter(new FileWrite("test.txt"))){ 
     list.stream().map(StoreCommands::toString).forEach(s -> out.println(s)); 
     out.close(); 
    } catch (IOException ex){ 
     System.err.out(ex); 
    } 
} 
0

для написания новых линий, check out the newLine() method из BufferedWriter класса.

Для чтения пользовательского ввода, вы можете использовать базовый Scanner класс следующим образом:

Scanner get = new Scanner(System.in); 
String path = get.nextLine(); 
... 
+0

Привет, код сканера не работает, я импортировал для него библиотеку. – user3278130

+0

Должен ли я сделать отдельный метод этого или я могу вставить его в тот, который у меня уже есть? – user3278130

+0

Я бы сделал пользовательский ввод и проверку в вашем основном методе. –

0

Вопрос № 1:

Изменение "\n" в "\r\n"

Вопрос № 2:

Следуйте за ответом, отправленным C.B., и дайте ему/ей голосование за него (если это возможно) ...

0


Чтобы ответить на ваш вопрос о том, не имея на жесткий код путь к файлу, попробуйте использовать аргументы командной строки, как это (в своем классе):

public static void main(String[] args){ 
... 
writingToFile(args[0]); 

Тогда при запуске приложения Java вы бы просто указать имя файла в командной строке, например так:
java <classname>.java D:/text.txt

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