在类路径中获取文件

时间:2013-07-18 20:32:23

标签: java file io

我正在尝试使用类路径访问文件,如下所示:

String path = getClass().getProtectionDomain().getCodeSource()
            .getLocation().toString();
    File test = new File(path);
    File table = new File(test, "testFile.xlsx");

我这样做是因为我需要创建一个Jar,如果它在同一个文件夹中,它将读取和写入该文件。

我收到此错误:

java.io.FileNotFoundException:  "myFilepath" (The filename, directory name, or volume label syntax is incorrect)

如果我在文件浏览器中复制并粘贴myFilepath,则会显示我的文件。有人看到我做错了什么,或者我可以改进我的方法?

2 个答案:

答案 0 :(得分:1)

不是尝试获取类路径名,而是使用getAbsolutePath()方法创建File对象,然后获取其绝对路径。这将给出运行代码的源文件的路径。

请尝试以下代码: -

 java.io.File f = new java.io.File("H");
        String path;
        path = f.getAbsolutePath();
        path = path.substring(0, (path.length() - f.getName().length()));
        f.deleteOnExit();

其中字符串路径将包含您的类文件目录路径。

答案 1 :(得分:0)

您无法访问类路径中的文件,但您可以从类路径获取资源流并从中读取内容。您需要查看此答案https://stackoverflow.com/a/1464366/39998