以下代碼將運行cmd
中的命令,並使用命令行的輸出生成文本文件。下面的代碼顯示了Eclipse輸出窗口中的正確信息,但文本文件中只打印了最後一行。誰能幫我這個?在文本文件(java)中寫入多行
import java.io.*;
public class TextFile {
public static void main(String[] args) throws IOException {
try {
Process p = Runtime.getRuntime().exec("git log");
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
BufferedWriter writer = null;
String line = null;
while ((line = in.readLine()) != null) {
writer = new BufferedWriter(new FileWriter("textfile.txt"));
writer.write(line);
System.out.println(line);
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
通過在每次迭代中創建一個FileWriter,該文件被覆蓋。在循環之外聲明Writers並在循環之後關閉它。 (順便說一下,你的代碼很難閱讀,下次請遵守一致的注意事項,這樣可以更容易地發現此類錯誤。) – qqilihq
請注意,**現在**應該使用java的新IO庫,稱爲'NIO'。核心類是'Paths','Path'和'Files'。例如,你可以通過'Paths.get(「filename」)找到文件或者用'Files.write(pathToFile,stuffToWrite,options)'寫入文件。 – Zabuza