文件在src中,但不是默认包?JAVA

文件在src中,但不是默认包?JAVA,java,eclipse,Java,Eclipse,这可能是非常抽象的写法,因为我不确定是否有其他的好方法。在Java中,我编写了一些东西来创建一个文件并将其保存在该文件夹中。然后我有另一个类/对象,它获取这些文件并使用这些文件进行一些计算。为什么当这些文件保存在src的默认包中时,而不是保存在默认包之外时,会抛出FileNotFoundException?我在EclipseIDE中工作,很好奇为什么会发生这种情况 编辑: 我试图创建一个文件temp=new文件(“src/random.txt”),这就是我遇到问题并抛出错误的地方。当我在创建新文

这可能是非常抽象的写法,因为我不确定是否有其他的好方法。在Java中,我编写了一些东西来创建一个文件并将其保存在该文件夹中。然后我有另一个类/对象,它获取这些文件并使用这些文件进行一些计算。为什么当这些文件保存在src的默认包中时,而不是保存在默认包之外时,会抛出FileNotFoundException?我在EclipseIDE中工作,很好奇为什么会发生这种情况

编辑:
我试图创建一个文件temp=new文件(“src/random.txt”),这就是我遇到问题并抛出错误的地方。当我在创建新文件时省略了“src”时,它起到了作用。

据我从上面的描述猜测,您没有提供文件的路径,只是使用文件名?这就是为什么应用程序要查找运行它的文件

据我从上面的描述猜,您没有提供文件的路径,只是使用文件名?这就是为什么应用程序要查找运行它的文件

提供完整路径,例如

String csvFile = "D:\\Documents\\ex\\myFile.csv";
FileReader fileReader = new FileReader(csvFile);
确保文件扩展名正确。

提供完整路径,例如

String csvFile = "D:\\Documents\\ex\\myFile.csv";
FileReader fileReader = new FileReader(csvFile);

确保文件扩展名正确。

部署应用程序时,src文件夹不存在。您的应用程序上下文中的“资源”与磁盘上的“文件”不一样。在开发时,您“可以”引用“源”位置,但在打包时,“源”位置将不存在(并且不可访问),您永远不应该从内部引用“源”位置code@MadProgrammer我不确定我是否完全明白这一点。当你说我不应该引用我的源位置时,你的意思是我永远不应该指定一个特定的路径,而只是让File类处理路径吗?也要感谢您的回复,只是想了解这里发生了什么我是说,您永远不应该有一个包含“src”(或者源位置可能是什么)的“文件”路径。您可以使用
Class#getResource
和/或
Class#getresourceastream
引用应用程序上下文中的资源,但这些路径将从“源”位置的根开始(但不包括它)。例如,如果您在
src/images/happy.png
中有图像,您可以使用
/images/happy.png
来引用它-但请记住,它不是文件,而是资源,因此您需要使用正确的工具访问它相对于工作目录解析的相关路径。默认情况下,这是Eclipse中的项目目录。可以在启动配置的选项卡参数中更改工作目录。在命令行上,工作目录是当前目录。部署应用程序时,src文件夹不存在。您的应用程序上下文中的“资源”与磁盘上的“文件”不一样。在开发时,您“可以”引用“源”位置,但在打包时,“源”位置将不存在(并且不可访问),您永远不应该从内部引用“源”位置code@MadProgrammer我不确定我是否完全明白这一点。当你说我不应该引用我的源位置时,你的意思是我永远不应该指定一个特定的路径,而只是让File类处理路径吗?也要感谢您的回复,只是想了解这里发生了什么我是说,您永远不应该有一个包含“src”(或者源位置可能是什么)的“文件”路径。您可以使用
Class#getResource
和/或
Class#getresourceastream
引用应用程序上下文中的资源,但这些路径将从“源”位置的根开始(但不包括它)。例如,如果您在
src/images/happy.png
中有图像,您可以使用
/images/happy.png
来引用它-但请记住,它不是文件,而是资源,因此您需要使用正确的工具访问它相对于工作目录解析的相关路径。默认情况下,这是Eclipse中的项目目录。可以在启动配置的选项卡参数中更改工作目录。在命令行上,工作目录是当前目录。我试图创建一个文件temp=new file(“src/random.txt”),这就是我遇到问题并抛出错误的地方。后来当我在创建新文件时省略了'src'时,它就起作用了。我更想知道为什么第一个会抛出错误,因为您的推理是我最初的想法。您的代码没有在src文件夹中运行。默认情况下,它在类所在的位置运行。我指的是用于编译的输出文件夹。例如:/bin。当您不提供路径时,将从运行代码的位置创建并读取文件。我试图创建一个文件temp=new file(“src/random.txt”),这就是我遇到问题并抛出错误的地方。后来当我在创建新文件时省略了'src'时,它就起作用了。我更想知道为什么第一个会抛出错误,因为您的推理是我最初的想法。您的代码没有在src文件夹中运行。默认情况下,它在类所在的位置运行。我指的是用于编译的输出文件夹。例如:/bin。当您不提供路径时,将从运行代码的位置创建并读取文件。