Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取类路径中的文件_Java_File_Io - Fatal编程技术网

Java 获取类路径中的文件

Java 获取类路径中的文件,java,file,io,Java,File,Io,我正在尝试使用类路径访问文件,如下所示: String path = getClass().getProtectionDomain().getCodeSource() .getLocation().toString(); File test = new File(path); File table = new File(test, "testFile.xlsx"); 我这样做是因为我需要创建一个Jar,如果这个文件在同一个文件夹中,它将读写这个文件 我得

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

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,它会显示我的文件。有人知道我做错了什么,或者我可以改进我的方法吗

您不能访问类路径中的文件,但可以从类路径获取资源流并从中读取内容。您需要查看这个答案,而不是试图获取类路径名,创建一个文件对象,然后使用getAbsolutePath()方法获取其绝对路径。这将给出运行代码的源文件的路径

请尝试以下代码:-

 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();

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

我尝试了此方法,但出现了相同的错误。请尝试上述代码,看看您是否获得了绝对类文件路径,但没有带有“path”变量的类名。这将我带到项目文件夹,该文件包含在src/main/resources中。如果文件与jar位于同一文件夹中,我将如何使其工作?请尝试通过连接将jar文件文件夹名称与此路径一起添加,然后使用新目录,查看其是否工作。然后编译的类文件与jar文件相同,从而达到类文件路径,如果我按照您建议的方式访问该文件:InputStream=Test.class.getResourceAsStream(“/SomeTextFile.txt”);然后如何创建一个FileOutputSteam来写入对此文件的更改?通常,您会读取jar中某个文件的内容(我们称之为资源)。之后您到底想做什么,修改jar中的文件?执行程序后需要访问该文件。您需要进一步澄清您的问题,添加更多的上下文并解释意图,而不仅仅是需要完成的实际“事情”。(否则我会投你反对票)@DavidHofmann我可以访问excel电子表格。我编辑此电子表格的内容。我将此电子表格的更改保存到原始文件中。此应用程序适用于非开发人员。他需要能够运行可执行文件,然后打开电子表格查看数据。这就是所有的上下文,我将非常感谢您的一些见解,而不是向下/向上投票。该应用程序应该在加载文件的文件系统中打开一个文件,修改该文件并保存它。是这样吗?