我的文本阅读器程序不打印任何内容

时间:2013-01-01 12:33:46

标签: java text io

我制作了一个非常简单的文本阅读器,只是为了测试机制,但它什么都不返回,我一无所知!我在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;

}

}

2 个答案:

答案 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;

}