即使文件存在于Java中也没有此类文件或目录错误

时间:2016-05-30 04:36:23

标签: java lda

我是Java的新手,我希望运行库JGibbLDA。我根据文档的要求,输入JGibbLDA-v.1.0的根目录并输入命令:

java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile models/data/data.txt

但是会发生错误:

Read Dataset Error: /models/data/data.txt (No such file or directory)
java.io.FileNotFoundException: /models/data/data.txt (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at jgibblda.LDADataset.readDataSet(LDADataset.java:154)
at jgibblda.Model.initNewModel(Model.java:476)
at jgibblda.Estimator.init(Estimator.java:45)
at jgibblda.LDA.main(LDA.java:49)
Fail to read training data!

我不知道为什么错误日志消息中的目录前面有/。但是models/data/data.txt确实存在,我可以正确地在根目录中输入models/data。该库的相关代码如下:

public static LDADataset readDataSet(BufferedReader reader, Dictionary dict){
    try {
        //read number of document
        String line;
        line = reader.readLine();
        int M = Integer.parseInt(line);
        System.out.println("NewM:" + M);

        LDADataset data = new LDADataset(M, dict);
        for (int i = 0; i < M; ++i){
            line = reader.readLine();

            data.setDoc(line, i);
        }

        return data;
    }
    catch (Exception e){
        System.out.println("Read Dataset Error: " + e.getMessage());
        e.printStackTrace();
        return null;
    }
}

我也试过../../models/data/data.txt但也失败了。你知道如何解决这个问题吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

在方法Model.initNewModel(LDACmdOption option)中,数据集的文件名构造为

dir + File.separator + dfile

如果dir为空,则文件名将从根目录开始。要避免此行为,可以使用选项-dir指定数据目录。

将其作为

运行
java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 \
   -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 \
   -dir /home/youruser/project/models/data/ \
   -dfile data.txt

将从目录data.txt中读取文件/home/youruser/project/models/data/。所有生成的文件也将存储在/home/youruser/project/models/data/

答案 1 :(得分:0)

程序正在寻找绝对路径,并且您正在传递相对路径。

错误说:

/models/data/data.txt (No such file or directory)
^
|--- This is the root of your filesystem

然后你必须传递完整路径,尝试使用完整路径(例如/home/youruser/project/models/data/data.txt):

java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile FULL_PATH
相关问题