【问题标题】:Java Reading a file line per lineJava 每行读取文件行
【发布时间】:2012-08-19 13:51:37
【问题描述】:

这是我的文件的样子:

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)

【问题讨论】:

  • 有点不对劲。您用来读取文件的代码看起来应该可以正常工作。考虑创建并发布sscce,以便我们可以体验问题并自己解决问题。
  • 您确定文件中的行以\n结尾吗?
  • 是什么让您认为它不起作用?你能发布你用来获取列表元素的代码吗?
  • 好的,它成功了。我所做的是替换文件测验。到绝对文件路径。但我不知道为什么会这样
  • 大家。我已经更新了我的问题:)

标签: java file-io io bufferedreader filereader


【解决方案1】:

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

文件 javadoc 是这样说的:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2016-01-24
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 2013-08-04
    相关资源
    最近更新 更多