我正在开发一个小型的基本GUI程序,它从我的资源中获取文件并获取文件的名称并将它们放在一个组合框中。例如,我只是在同一个包中有一个名为images的文件,并试图获取文件名。我获取文件的方式是使用getResoure(),如此
java.net.URL url = FileDemo.class.getResource("images");
但是当我尝试将文件放在目录
中时 File urlfile = new File(url.toString());
String[] files = urlfile.list();
第一行会将url转换为string并创建一个文件对象但是当我尝试获取目录中的文件列表时,它会向字符串数组返回null。
我分解了代码并在发现的netbeans中使用了调试器,当它执行SecurityManager检查时它不会通过。
我的问题是项目内的文件是受保护的还是无法使用list()和listFiles()访问它们,或者我做错了什么?我也在我的学校计算机上运行相同的脚本,他们有上面的代码工作的Windows 7。但是当我在我的Mac上运行它甚至2台胜利的xp机器时,它只是不起作用?那是为什么?
我希望这有意义我只是被困在这里仍然是一个新的java
先谢谢。
答案 0 :(得分:2)
getResource(String)
的类正在向图像返回URL
,但无法保证这是一个文件URL(以“file:”开头)。如果你的类嵌入在一个jar文件中,那肯定不会是这种情况,因此它在某些情况下会失败而不是其他情况。
如果您的目的是实际让用户看到文件系统的一部分,那么我建议完全避免使用getResource,这通常在您的应用程序希望找到并加载图标或配置文件等资源时更有用
相反,您可以使用JFileChooser
,这是一个丰富的Swing组件,用于导航文件系统和选择文件。