如何读取文件并将文本拆分为变量?

时间:2017-08-19 18:39:38

标签: java

我正在尝试从JTable的文本文件中写入和读取数据。我能够将数据写入文本文件,但是我很难读取并将数据加载回JTable。

写入文件方法

此方法将创建文本文件,并将JTable的各行作为单独的行保存到文件中。

public void saveData() {

    try{
        PrintWriter writer = new PrintWriter("data.txt", "UTF-8");
        for (int row = 0; row < table.getRowCount(); row++) {
            for (int col = 0; col < table.getColumnCount(); col++) {
                writer.print(table.getValueAt(row, col));
                writer.print(":");
            }
            writer.println();
        }
        writer.close();
    } catch (IOException e) {

    }      
}

从文件方法中读取

public void loadData() {

    File file = new File("data.txt");
    Scanner scanner;
    try {
        scanner = new Scanner(file);
        while (scanner.hasNextLine()) {
               String line = scanner.nextLine();

                String[] details = line.split(":");
                String name = details[0];
                String dueDate = details[1];
                String priority = details[3];

                model.addTask(name, dueDate, priority);
                model.fireTableDataChanged();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

我希望这个方法读取每一行并将这些行分成3个变量,以便我可以将它添加回我的JTable。

例如,文件中的数据保存如下:

A task:None:Low

Task2:2, January:High

因此,这会将第1行分为A taskNoneLow,将第2行分为Task22, JanuaryHigh

感谢。

2 个答案:

答案 0 :(得分:2)

String priority = details[3];更改为String priority = details[2];

在Java索引中,从0开始,因此要访问位于第三个索引的最终元素Low,您必须使用2

答案 1 :(得分:2)

String priority = details[3];

这里它必须是2而不是3,因为你得到第三个元素,它们从0开始编号。