2012-04-29 4 views
0

В частности, мне удалось создать (возможно) программу, которая читает в файле и помещает отступ в начале каждого абзаца. Проблема в том, что до того, как я напечатал счетчик символов в выходном файле, теперь у меня нет ничего печатания в выходном файле. Однако Java говорит, что он был изменен из внешнего источника. Раньше я имел возможность просматривать изменения файла прямо в моей JGrasp IDE. Есть ли что-то очевидное, что я не замечаю?Как напечатать что-то в выходном файле?

Вот код ... Просто в случае, если это мой код:

public class ReadFile 
{ 
static Scanner inFile; 
static PrintWriter outFile; 

public static void main(String[] args) throws IOException 
{ 
    String inputString; 
    final String indent = "  "; 
    inFile = new Scanner(new FileReader("History.d1")); 
    outFile = new PrintWriter(new FileWriter("History.d2")); 
    inputString = indent + inFile.nextLine(); 
    outFile.println(inputString); 

    while (inFile.hasNextLine()) 
    { 
    inputString = inFile.nextLine(); 
    } 

    if (inputString.length() < 1) 
    { 
    outFile.print("/n"); 
    } 
    else if (inputString.length() > 0) 
    { 
    inputString = indent + inputString; 
    } 
    outFile.println(inputString); 
} 
} 
+5

Я настоятельно рекомендую отпечатать ваш код. – Griwes

+1

Я не думаю, что проблема в Java, ваша IDE просит перезагрузить файл с момента его изменения вне среды IDE (по вашей программе.) – g13n

+0

Я бы также закрыл() 'inFile и outFile после того, как вы закончите. – mazaneicha

ответ

0

В любое время вы внешне изменить файл, который уже открыт в IDE *, вам будет предложено перезагрузить файл. В Eclipse это можно сделать, нажав кнопку F5. Это приведет к обновлению отображения файла с внесенными изменениями.

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

Если вы изменили операцию вывода вывода с System.out.println на outFile.println, это означает, что вывод отправляется в указанный файл, а не на консоль. Если вы хотите проверить, что вывод действительно печатается, вы можете включить System.out.println(inputString) до или после инструкции outFile.println(inputString).

Кроме того, как предложено mazaneicha, рекомендуется выполнить метод close() на inFile и outFile, когда вы закончите с ними. Даже несмотря на то, что сборка мусора Java автоматически закрывает эти соединения, ее по-прежнему хорошая идея, чтобы привыкнуть.

* работает для Eclipse, и Netbeans

0

Вам нужно по крайней мере, промывать писателя, добавьте это в конце:

outFile.flush(); 

Также не забудьте закрыть потоки, когда вы сделали:

outFile.close(); 
0

Этот сегмент кода сделает читатель inFile полностью прочитанным до конца файла, минуя блок кода if/else. Я не думаю, что вы хотели иметь только одну строку в цикле while.

while (inFile.hasNextLine()) 
{ 
    inputString = inFile.nextLine(); 
} 
0

Новый символ линии - '\ n', а не '/ n'. Вот код, который может делать то, что вы хотите:

try(BufferedReader inFile = new BufferedReader(new FileReader("History.d1")); BufferedWriter outFile = new BufferedWriter(new FileWriter("History.d2"))){ 
    String inputString; 
    final String indent = "  "; 

    while ((inputString=inFile.readLine())!=null) 
    { 

     if (inputString.length() < 1) 
     { 
      outFile.write("\n"); 
     } 
     else if (inputString.length() > 0) 
     { 
      inputString = indent + inputString; 
      outFile.write(inputString); 
     } 

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