Написать в файл в Java - PullRequest
1 голос
/ 04 мая 2010

Как я могу изменить этот метод запуска, чтобы не только печатать srting в окне вывода, но и записывать в файл, например, outfile.txt в каталоге проекта. Также каждая строка должна быть на отдельной строке в файле.

Итак, я уже создал файл в каталоге проекта с именем outfile.txt

А в тот момент, когда код печатается нормально в окне, но не печатается в текстовом файле

вот код #

public void run() throws IOException
{
    Scanner sc = new Scanner(System.in);
    boolean cont = true;
    while (cont) {
       System.out.println("Enter text");
       String s = sc.nextLine();
       if ("*".equals(s)) {
           cont = false;
       } else {
           String result = shorthand(s);
           System.out.println(result);
           PrintWriter pw = new PrintWriter("outfile.txt");
           pw.println(result);
      }
   }
}

Ответы [ 4 ]

6 голосов
/ 04 мая 2010

Как только вы закончите писать, вам нужно закрыть открытый файл:

pw.Close();
1 голос
/ 04 мая 2010

Просто взгляните на пример .

0 голосов
/ 04 мая 2010

Вы каждый раз создаете нового печатника. Попробуйте сделать это до цикла, как таковой

PrintWriter pw = new...
while(cond) {
    ...
    pw.println(...);
    pw.flush(); // do this too, it does the actual writing
}
pw.close();
0 голосов
/ 04 мая 2010

Вы не должны использовать относительные пути в java.io.File материалах. Они будут относительно текущего рабочего каталога, который, в свою очередь, зависит от того, как вы запустили Java-приложение. Это может не быть каталогом проекта, как вы ожидаете. Вы всегда должны использовать абсолютные пути в java.io.File. Например. c:/path/to/outfile.txt.

Чтобы узнать, где он в данный момент на самом деле был записан, выполните:

 File file = new File("outfile.txt");
 System.out.println(file.getAbsolutePath());

Еще раз, никогда не используйте относительные пути. Всегда используйте абсолютные пути. Еще просто поместите его в путь к классам и используйте ClassLoader#getResource(), а затем URL#toURI() и затем new File(uri).

И действительно, закройте потоки. Это неявно сбрасывает буфер данных в ресурс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...