2

这是我的文件的样子:

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)

4

1 回答 1

0

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

这是文件 javadoc 所说的:

在 UNIX 系统上,通过根据当前用户目录解析相对路径名,使其成为绝对路径名。在 Microsoft Windows 系统上,通过将相对路径名解析为由路径名命名的驱动器的当前目录(如果有),从而使相对路径名成为绝对路径;如果不是,则针对当前用户目录进行解析。

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

但底线是,如果你要使用相对路径,你需要有正确的当前目录。

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

于 2012-08-24T01:14:54.723 回答