如何从文本文件中获取文本并将其放入 Table
How to get text from a TextFile and putting it to a Table
我正在尝试将文本从文本文件放入 table 我希望它在按下按钮时显示在 table 上。它不显示任何错误,它只是不起作用。有人可以解释为什么以及如何让它发挥作用。正文用 ; 分隔
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
try {
BufferedReader br = new BufferedReader(new
FileReader("zam.txt"));
String r;
int v =0;
do{
r = br.readLine();
if(r!=null){
v++;
}
}while(r!=null);
Object[] row = new String[v];
do{
r = br.readLine();
if(r!=null){
for (int i = 0; i < v; i++) {
int ix = r.indexOf(";");
row[i] = r.substring(0, ix);
r = r.substring(ix+1);
int zn = r.indexOf(";");
row[i] += r.substring(0, zn);
r = r.substring(zn+1);
int xn = r.indexOf(";");
row[i] += r.substring(0, xn);
r = r.substring(xn+1);
int an = r.indexOf(";");
row[i] += r.substring(0, an);
table.addRow(row);
}
}
}while(r!=null);
br.close();
} catch (IOException e) {
}
}
你数一数文件中的行数
do{
r = br.readLine();
if(r!=null){
v++;
}
}while(r!=null);
之后你尝试从文件中读取,在已经达到 EOF 之后
do{
r = br.readLine();
if(r!=null){
[...]
}
}while(r!=null);
r = br.readLine();
会returnnull
,因为已经到了EOF,跳过循环
要解决此问题,您可以重新打开文件
//counting code
br.close();
br = new BufferedReader([...]);
//reading code
或者您可以将这些行添加到 List
,然后使用
BufferedReader br = new BufferedReader([...]);
List<String> lines = new ArrayList<String>();
for(String line = br.readLine(); line != null; line = br.readLine())
lines.add(line);
String[] row = lines.toArray(new String[0]);
如果您只是将值添加到 table,则根本不存储文件可能更容易
BufferedReader br = new BufferedReader([...]);
for(String line = br.readLine(); line != null; line = br.readLine())
table.addRow(line.split(";"));
你应该缩短它。
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
try {
BufferedReader br = new BufferedReader(new
FileReader("zam.txt"));
String r;
do{
r = br.readLine();
if(r!=null){
String [] sline=r.split(";");
table.addRow(sline);
}
}while(r!=null);
br.close();
} catch (IOException e) {
}
}
原因:您读取文件2次但没有重置流。为什么?
然后你统计行数,把这个数当成列数,为什么?
我正在尝试将文本从文本文件放入 table 我希望它在按下按钮时显示在 table 上。它不显示任何错误,它只是不起作用。有人可以解释为什么以及如何让它发挥作用。正文用 ; 分隔
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
try {
BufferedReader br = new BufferedReader(new
FileReader("zam.txt"));
String r;
int v =0;
do{
r = br.readLine();
if(r!=null){
v++;
}
}while(r!=null);
Object[] row = new String[v];
do{
r = br.readLine();
if(r!=null){
for (int i = 0; i < v; i++) {
int ix = r.indexOf(";");
row[i] = r.substring(0, ix);
r = r.substring(ix+1);
int zn = r.indexOf(";");
row[i] += r.substring(0, zn);
r = r.substring(zn+1);
int xn = r.indexOf(";");
row[i] += r.substring(0, xn);
r = r.substring(xn+1);
int an = r.indexOf(";");
row[i] += r.substring(0, an);
table.addRow(row);
}
}
}while(r!=null);
br.close();
} catch (IOException e) {
}
}
你数一数文件中的行数
do{
r = br.readLine();
if(r!=null){
v++;
}
}while(r!=null);
之后你尝试从文件中读取,在已经达到 EOF 之后
do{
r = br.readLine();
if(r!=null){
[...]
}
}while(r!=null);
r = br.readLine();
会returnnull
,因为已经到了EOF,跳过循环
要解决此问题,您可以重新打开文件
//counting code
br.close();
br = new BufferedReader([...]);
//reading code
或者您可以将这些行添加到 List
,然后使用
BufferedReader br = new BufferedReader([...]);
List<String> lines = new ArrayList<String>();
for(String line = br.readLine(); line != null; line = br.readLine())
lines.add(line);
String[] row = lines.toArray(new String[0]);
如果您只是将值添加到 table,则根本不存储文件可能更容易
BufferedReader br = new BufferedReader([...]);
for(String line = br.readLine(); line != null; line = br.readLine())
table.addRow(line.split(";"));
你应该缩短它。
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)
{
try {
BufferedReader br = new BufferedReader(new
FileReader("zam.txt"));
String r;
do{
r = br.readLine();
if(r!=null){
String [] sline=r.split(";");
table.addRow(sline);
}
}while(r!=null);
br.close();
} catch (IOException e) {
}
}
原因:您读取文件2次但没有重置流。为什么?
然后你统计行数,把这个数当成列数,为什么?