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

4 に答える 4

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

    }   
}
于 2012-04-29T19:46:35.273 に答える
0

このコード セグメントにより、inFile リーダーは、if/else コード ブロックをバイパスして、ファイルの最後まで読み取ります。while ループにこの 1 行だけを含めるつもりはなかったと思います。

 while (inFile.hasNextLine())
 {
     inputString = inFile.nextLine();
 }
于 2012-04-29T19:19:25.293 に答える
0

IDE* で既に開いているファイルを外部から変更するたびに、ファイルをリロードするよう求められます。Eclipse では、これは F5 ボタンを押すことで実行できます。これにより、ファイル表示が更新され、変更が反映されます。

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

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

また、mazaneicha が提案したように、close()メソッドinFileを実行するoutFileことをお勧めします。Java ガベージ コレクションはこれらの接続を自動的に閉じますが、それでも習慣化することをお勧めします。

*Eclipse と Netbeans で動作します

于 2012-04-29T19:14:33.777 に答える
0

少なくともライターをフラッシュする必要があります。これを最後に追加します。

outFile.flush();

また、完了したらストリームを閉じることを忘れないでください。

outFile.close();
于 2012-04-29T19:15:16.350 に答える