写入文本文件并将其读入表中会产生奇怪的结果(Java)

时间:2018-02-07 16:58:28

标签: java

我正在尝试将文本文件用作临时数据库。问题是,当我将它写入文本文件时,它会按顺序写入。然后它以表格的形式显示在表格中。有人能看出为什么会这样吗?

enter image description here

这是我写入文件的方法。

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

}

1 个答案:

答案 0 :(得分:0)

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

  1. 您没有将,写入文件作为分隔符。相反,您正在撰写;

  2. 每个操作系统的换行符都不同。 \r\n是Windows的标准,而\n是MacOS和Linux的标准

  3. 我会更改以下内容:

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

    docs
      

    写一个行分隔符。行分隔符字符串由系统属性line.separator定义,不一定是单个换行符('\ n')。

相关问题