簡體   English   中英

寫入文本文件並將其讀取到表中會產生奇怪的結果(Java)

[英]Writing to a text file and reading it into a table is giving weird results (Java)

我正在嘗試使用文本文件作為臨時數據庫。 問題是,當我將其寫入文本文件時,它會無序寫入。 然后以這種方式將其顯示在表格中。 誰能看到為什么會這樣?

在此處輸入圖片說明

這是我寫入文件的方法。

public void writeDtLogsCsv() throws IOException {
    Writer writer = null;
    try {
        File file = new File("C:\\savedLogs.txt");
        writer = new BufferedWriter(new FileWriter(file));
        for (AddLogs log : logView) {

            String text = log.getDate() + ";" + log.getName() + ";" + log.getDowntime() + ";" + 
                          log.getEquipment() + ";" + log.getProblem() + ";" + log.getFix() + "\r\n";

            writer.write(text);


        }
        writer.flush();
        writer.close();

    } catch (IOException ex) {
    }
}

這是我從文件中讀取的方法。

public void readCSV() {

    String CsvFile = "C:\\savedLogs.txt";
    String FieldDelimiter = ",";

    BufferedReader br;

    try {
        br = new BufferedReader(new FileReader(CsvFile));

        String line;
        while ((line = br.readLine()) != null) {
            String[] fields = line.split(FieldDelimiter, -1);

            AddLogs record = new AddLogs();       
            logView.add(record);

        }

    } catch (FileNotFoundException ex) {
        Logger.getLogger(AddLogs.class.getName())
                .log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(AddLogs.class.getName())
                .log(Level.SEVERE, null, ex);
    }

}

在再次查看writeDtLogsCsv()之后,我注意到了這一點。

  1. 您沒有將,作為分隔符寫出到文件中。 相反,您正在寫作;

  2. 每個操作系統的換行符不同。 \\r\\n是Windows的標准, \\n是MacOS和Linux的標准

我將更改以下內容:

for (AddLogs log : logView) {

    String text = log.getDate() + "," + log.getName() + "," + log.getDowntime() + "," + 
                  log.getEquipment() + "," + log.getProblem() + "," + log.getFix();

    writer.write(text);
    writer.newLine(); // Insert a new line character
}

writer.newLine();文檔 writer.newLine();

寫一個行分隔符。 行分隔符字符串由系統屬性line.separator定義,不一定是單個換行符('\\ n')。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM