2012-04-29 14 views
0

具体的に言えば、ファイルを読み込んで各段落の先頭にインデントを入れるプログラム(おそらく)を作成することができました。問題は、私が出力ファイルに文字カウンタを印刷する前で、今は出力ファイルに何も印刷していないことです。しかし、Javaは外部から変更されていると言います。以前はJGrasp IDEでファイルの変更を見ることができました。私は見落としている何かが明らかですか?ここで出力ファイルに何かを印刷するにはどうすればよいですか?

が、それは私のコードです念のために...コードです:あなたは、外部*すでに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をclose()する。 – mazaneicha

答えて

0

いつでも、あなたはファイルをリロードするように求められます。 Eclipseでは、これはF5ボタンを押すことで実行できます。これにより、ファイルの表示が更新されて更新されます。

ファイルを更新した後に正しい情報が表示されているとは限りません。私はあなたが持っている問題は、あなたがコンソールビューのテキストのリアルタイム表示をファイル表示ビューと混同していることだと思います。

出力印刷操作をSystem.out.printlnステートメントからoutFile.printlnに変更した場合、これは出力がコンソールではなく指定されたファイルに送信されることを意味します。出力が実際に印刷されていることを確認する場合は、outFile.println(inputString)ステートメントの前後にSystem.out.println(inputString)を含めることができます。

また、mazaneichaが提案したように、完了したら​​とoutFileclose()メソッドを実行することをお勧めします。 Javaのガベージコレクションは自動的にこれらの接続を閉じますが、その習慣に入るのはまだ良いアイデアです。

*あなたは、少なくとも最後にこれを追加し、ライターをフラッシュする必要があるEclipseとNetbeansの

0

のために働く:

outFile.flush(); 

はまた、あなたが行われたときにストリームを閉じることを忘れないでください:

outFile.close(); 
0

このコードセグメントは、if/elseコードブロックを迂回して、ファイルの最後までinFileリーダーを完全に読み取るようにします。私はあなたがwhileループにこの1行しか持たないことを意味するとは思わない。

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); 
     } 

    } 
} 
関連する問題