Java每行读取一个文件行

时间:2012-08-24 00:52:58

标签: java file-io io bufferedreader filereader

这就是我的文件:

IDENTIFICATION::HARD::Should We appreciate Art?::Yes
MULTIPLECHOICE::HARD::Which of the FF is not an era of Art?::Bayutism::Digitalism,Somethingism,Retardism,Bayutism
IDENTIFICATION::HARD::What is Chris Browns Greatest Hit?::Rihanna

我正在读这样的文件

public void openQBankFile(){
    try{
        BufferedReader in = new BufferedReader(new FileReader(qbank.getAbsolutePath()));
        String desc;
        while((desc = in.readLine()) != null){
            qbank_cont.add(desc);
        }

        in.close();
    }catch(FileNotFoundException fnfe){
        System.out.println("Question Repository Could Not Be Found");
        return;
    }catch(IOException ioe){
        ioe.printStackTrace();
    }
}

这是我获取arrayList

的内容的地方
public static void main(String[] args){
        CreateQuiz cq = new CreateQuiz(new File("./quiz/HUM101.quiz"),new File("./qbank/HUM101.qbank"));
        cq.openQBankFile();
        cq.filterQuestions(3, "HARD");
        System.out.println(cq.qbank_cont.get(0));
    }

这就是我添加它的方式

public void filterQuestions(int numOfItems, String difficulty){
        List<String> qt_diff = new ArrayList<String>();
        for(int i = 0; i< qbank_cont.size();i++){
            qt_diff.add(qbank_cont.get(i));
        }
    }

我将它存储在arrayList内。但是当我将它存储在arraylist中时,它只会插入整个文本。每行不行。 (我正在使用arrayList.get(0)

1 个答案:

答案 0 :(得分:0)

问题的根源似乎是你不了解Java如何处理相对路径名。

以下是File javadoc所说的内容:

  

在UNIX系统上,通过将相对路径名解析为当前用户目录,使其成为绝对路径名。在Microsoft Windows系统上,通过将路径名解析为路径名所指定的驱动器的当前目录(如果有),使相对路径名成为绝对路径名;如果没有,则根据当前用户目录解析。

“当前用户目录”表示启动应用程序时生效的当前目录。这取决于应用程序的启动方式。例如,如果使用java从命令shell启动,则当前目录将是shell的当前目录。但是,如果您使用启动包装器脚本,则在启动JVM之前它可能会cd到其他位置。等等。

但最重要的是,如果您要使用相对路径,则需要拥有正确的当前目录。

顺便提一下,当JVM启动时,当前目录的绝对路径将放置在“系统属性”对象中。您可以阅读该属性以了解当前目录是什么,但更改属性不会更改File API和朋友解析相对路径的方式。 AFAIK,纯Java应用程序无法可靠地更改其自己的当前目录。

相关问题