我制作了一个非常简单的文本阅读器,只是为了测试机制,但它什么都不返回,我一无所知!我在Java方面不是很有经验,所以这可能是一个非常简单和愚蠢的错误!这是代码:
CLASS 1
import java.io.IOException;
public class display {
public static void main(String[] args)throws IOException {
String path = "C:/Test.txt";
try{
read ro = new read(path);
String[] fileData = ro.reader();
for(int i = 0; i<fileData.length;i++){
System.out.println(fileData[i]);
}
}catch(IOException e){
System.out.println("The file specified could not be found!");
}
System.exit(0);
}
}
CLASS 2
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
public class read {
private String path;
public read(String file_path){
path = file_path;
}
public String[] reader() throws IOException{
FileReader fR = new FileReader(path);
BufferedReader bR = new BufferedReader(fR);
int nOL = nOLReader();
String[] textData = new String[nOL];
for(int i = 0; i < nOL; i++){
textData[i] = bR.readLine();
}
bR.close();
return textData;
}
int nOLReader()throws IOException{
FileReader fR = new FileReader(path);
BufferedReader bR = new BufferedReader(fR);
String cLine = bR.readLine();
int nOL = 0;
while(cLine != null){
nOL++;
}
bR.close();
return nOL;
}
}
答案 0 :(得分:2)
哇。那真是很多工作你只是为了阅读文件。假设你只想坚持你的代码我会指出:
在第2课,
String cLine = bR.readLine();
int nOL = 0;
while(cLine != null) {
nOL++;
}
会遇到无限循环,因为你永远不会读另一条线,只是第一次就是全部。所以说得像:
String cLine = bR.readLine();
int nOL = 0;
while(cLine != null) {
nOL++;
cLine = bR.readLine();
}
P.S。阅读一些简单的教程,以获得Java中的I / O点。这是一些代码for your job。
答案 1 :(得分:0)
您只从文件中读取一行,然后在永久循环中检出读取值(下一行永远不会被读取,因此您永远不会在cLine中获取null,因此循环永远不会结束)。将你的方法nOLReader改为this(我在循环中添加了cLine = bR.readLine();它会起作用:
int nOLReader() throws IOException {
FileReader fR = new FileReader(path);
BufferedReader bR = new BufferedReader(fR);
String cLine = bR.readLine();
int nOL = 0;
while (cLine != null) {
nOL++;
cLine = bR.readLine();
}
bR.close();
return nOL;
}