まず第一に、私は入力と出力について何も知らなかったので、これを尋ねるつもりはありません。PrintWriter、FileInputStream、InputStreamReader、IOException に関するチュートリアルをたくさん見てきました。これらのクラスの概念を理解しています。しかし、私はこのコードを理解していません。実行してみました。まず、「two lines:」という出力がありました。最初の行に「こんにちは」と入力し、2 行目に「私はボブです」と入力しました。Enter キーを押すと、プログラムは私が書いたものを正確に出力します。コンソールに表示されるサンプルは次のとおりです。
two lines:
hello
I am Bob
hello
I am Bob
この後もプログラムは実行され続けます。誰かが私にコードを説明してもらえますか? このコードには、 System.getProperty ("line.separator")のようないくつかの新しいものがあります。このメソッドの目的は何ですか? while ループと for ループは何をしますか? fout.flush()がコメントアウトされているのはなぜですか? それをコードに含めるとどうなりますか? 私はとても混乱しています。コードは次のとおりです。
import java.io.*;
// File, PrintWriter, FileInputStream, InputStreamReader, IOException
class Demo
{
public static void main (String[] args)
{
PrintWriter out = new PrintWriter (System.out, true);
InputStreamReader in = new InputStreamReader (System.in);
File file = new File ("file.txt");
try (
PrintWriter fout = new PrintWriter (file);
InputStreamReader fin = new InputStreamReader (new FileInputStream (file)))
{
out.println ("two lines:");
String line1 = readLine (in);
String line2 = readLine (in);
out.println (line1);
out.println (line2);
out.println ();
fout.println (line1);
fout.println (line2);
//fout.flush ();
line1 = readLine (fin);
line2 = readLine (fin);
out.println (line1);
out.println (line2);
}
catch (IOException e)
{
e.printStackTrace ();
}
}
public static String readLine (InputStreamReader in) throws IOException
{
String sepChars = System.getProperty ("line.separator");
int countChars = sepChars.length ();
StringBuilder sb = new StringBuilder ();
char c = (char) in.read ();
while (!sepChars.contains ("" + c))
{
sb.append (c);
c = (char) in.read ();
}
for (int i = 0; i < countChars - 1; i++)
c = (char) in.read ();
String rad = sb.toString ();
return rad;
}
}