我正在使用File IO
动态创建文件FileOutputStream fos = new FileOutputStream(“sample.txt”);
并尝试在另一个类中使用getClass()。getResourceAsStream(“sample.txt”)加载sample.txt,并且无法加载文件,而如果我在eclipse中刷新项目,则可以加载文件,getResourceStream缓存文件吗?我需要的是动态创建文件并加载它们并对它们执行一些操作,我错过了什么?
代码 InputStream is = getClass()。getClassLoader()。getResourceAsStream(“sample.txt”); //绝对路径
PS:在构建路径中添加了新创建的文件
答案 0 :(得分:1)
运行应用程序时,在源代码树中创建该文件(通常为/ src)。但你的bin文件夹是类路径上的(通常是/ bin)。因为您在eclipse之外创建了文件(在另一个java进程中),所以只有当您刷新工作区时才1)它在源文件夹中显示为eclipse和2)然后构建器将其复制到bin文件夹。
getResourceAsStream()旨在用于保证在类路径上的东西,例如源树中的静态资源。对于动态生成的文件,您需要查找或传入其他位置,而不是使用getResourceAsStream()。