Java 如何读取文件并将文本拆分为变量?
我正在尝试从我的JTable的文本文件中写入和读取数据。我能够将数据写入文本文件,但在读取数据并将其加载回JTable时遇到困难 写入文件方法Java 如何读取文件并将文本拆分为变量?,java,Java,我正在尝试从我的JTable的文本文件中写入和读取数据。我能够将数据写入文本文件,但在读取数据并将其加载回JTable时遇到困难 写入文件方法 public void loadData() { File file = new File("data.txt"); Scanner scanner; try { scanner = new Scanner(file); while (scanner.hasNextLine()) {
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();
}
}
此方法将创建文本文件,并将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) {
}
}
我希望这个方法能够读取每一行的数据,并将这些行拆分为3个变量,以便将其添加回JTable
例如,文件中的数据保存如下:
任务:无:低
Task2:2,一月:高
因此,这会将第1行拆分为任务
,无
和低
,第2行拆分为任务2
,2,一月
和高
谢谢。更改
字符串优先级=详细信息[3]代码>至字符串优先级=详细信息[2]代码>
在Java索引中,索引从0
开始,因此要访问最后一个元素Low
,即第三个索引,您必须使用2
更改字符串优先级=详细信息[3]代码>至字符串优先级=详细信息[2]代码>
String priority = details[3];
在Java中,索引从0
开始,因此要访问位于第三个索引的最后一个元素Low
,必须使用2
String priority = details[3];
这里必须是2,而不是3,因为您得到的是第三个元素,它们的编号从0开始
这里必须是2,而不是3,因为您得到的是第三个元素,它们的编号从0开始。什么东西不起作用,是否有stacktrace?@CardinalSystem Umm。。。控制台会在线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException中显示异常:3
是时候进行一些调试并打印出每一行的内容以及读取时拆分得到的数组。您拆分错误,使用错误的正则表达式。请阅读并相应地增强您的问题。到底什么不起作用,是否存在stacktrace?@CardinalSystem Umm。。。控制台在线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException中说异常:3
是时候进行一些调试并打印出每一行的内容以及读取时通过拆分获得的数组。您使用错误的正则表达式拆分错误。请阅读并相应地增强您的问题。OMG。这很有效。谢谢我真的不知道我怎么会错过这些。@user982467每个人都会时不时地犯这些错误,我建议你使用一个,这样你就不会再错过这种东西了。在IDE中,您可以单击Stacktrace,它将直接指向引发异常的行。。。我猜那不是最好的then@user982467Eclipse非常好,您只需要记住查看您的控制台,并按照stacktrace返回程序。当线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException:3
中显示异常时,后面可能有一行类似于randomClass中的。java:27
,如果单击该行,应该直接指向导致错误的行,在本例中为字符串优先级=详细信息[3]代码>.OMG。这很有效。谢谢我真的不知道我怎么会错过这些。@user982467每个人都会时不时地犯这些错误,我建议你使用一个,这样你就不会再错过这种东西了。在IDE中,您可以单击Stacktrace,它将直接指向引发异常的行。。。我猜那不是最好的then@user982467Eclipse非常好,您只需要记住查看您的控制台,并按照stacktrace返回程序。当线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException:3
中显示异常时,后面可能有一行类似于randomClass中的。java:27
,如果单击该行,应该直接指向导致错误的行,在本例中为字符串优先级=详细信息[3]代码>。