1

我正在使用 File IO 动态创建一个文件,

FileOutputStream fos = new FileOutputStream("sample.txt");

并尝试在另一个类中使用 getClass().getResourceAsStream("sample.txt") 加载 sample.txt,它无法加载文件,而如果我在 eclipse 中刷新项目,它能够加载文件, getResourceStream 缓存文件吗?,我需要动态创建文件并加载它们并对它们执行一些操作,我错过了什么吗?

代码 InputStream is = getClass().getClassLoader().getResourceAsStream("sample.txt");//绝对路径

PS:在构建路径中添加了新创建的文件

4

1 回答 1

1

当您运行您的应用程序时,您会在源代码树(通常是 /src)中创建该文件。但是您的 bin 文件夹是类路径上的内容(通常是 /bin)。因为您在 eclipse 之外(在另一个 java 进程中)创建了文件,所以只有当您刷新工作区时,1)它才会显示在 eclipse 的源文件夹中,2)然后构建器将其复制到 bin 文件夹中。

getResourceAsStream( ) 旨在用于保证在类路径上的东西,例如源树中的静态资源。对于动态生成的文件,您需要查找或传入其他位置,而不是使用 getResourceAsStream( )。

于 2013-06-21T14:33:15.323 回答