我应该如何将文件加载到我的Java应用程序中?我应该如何将文件加载到我的Java应用程序中?
回答
简短的回答
使用以下两种方法之一:
例如:
InputStream inputStream = YourClass.class.getResourceAsStream("image.jpg");
-
长的答案
通常情况下,人们不希望加载使用绝对路径的文件。例如,如果您可以提供帮助,请不要这样做:
File file = new File("C:\\Users\\Joe\\image.jpg");
此技术至少有两个原因不推荐。首先,它会创建对特定操作系统的依赖关系,这会阻止应用程序轻松移动到其他操作系统。 Java的主要优点之一是能够在许多不同的平台上运行相同的字节码。使用这样的绝对路径使代码更加便于携带。
其次,根据文件的相对位置,此技术可能会创建外部依赖性并限制应用程序的移动性。如果文件存在于应用程序的当前目录之外,则会创建一个外部依赖关系,并且必须知道该依赖关系才能将该应用程序移动到另一台机器上(容易出错)。
而是使用Class
类中的getResource()
方法。这使得应用程序更具可移植性。它可以被移动到不同的平台,机器或目录,并仍然正常工作。
特别提示:不要做File(“C:\ Users \ Joe \ image.jpg”),因为\ U \ J和\我都是逃避,你会得到一个错误。
也可以像这样使用它: `getClass()。getClassLoader()。getResource(“image.jpg”);` – ktulinho 2013-05-31 13:45:39
那么应该指出,如果你在Windows NT或更新的版本,你*可以*使用/字符作为分隔符。所以没有我知道的OS有JRE,并且不会理解images/splashimage.png。 – 2017-07-01 20:44:53
getResource很好,但使用相对路径也可以工作,只要你可以控制工作目录的位置(你通常可以)。
此外,可以使用File.separator,File.separatorChar或System.getProperty("file.separator")得到有关分隔符的平台依赖性。
http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String)说:“资源的名称是'/' - 分隔标识资源的路径名称。所以不要使用File.separator。 – 2015-08-18 11:17:17
即使在Windows上,我也没有遇到过使用unix风格路径分隔符的问题(尽管最好检查File.separatorChar)。
使用ClassLoader.getResource()的技术最适合将要从JAR文件加载的只读资源。有时,you can programmatically determine the application directory对管理员可配置的文件或服务器应用程序很有用。 (当然,用户可编辑文件应该存储在System.getProperty("user.home")目录中的某个地方。)
什么是加载文件的配置或数据(如输入文件)或作为资源?
- 如果作为一种资源,遵循Will and Justin
- 给出。如果配置,那么你可以使用一个ResourceBundle或Spring(如果你的配置较为复杂)的建议和例子。
- 如果您需要读取文件以处理数据,则此代码段可能会帮助
BufferedReader file = new BufferedReader(new FileReader(filename))
,然后使用file.readLine();
读取文件的每一行。不要忘记关闭文件。
public byte[] loadBinaryFile (String name) {
try {
DataInputStream dis = new DataInputStream(new FileInputStream(name));
byte[] theBytes = new byte[dis.available()];
dis.read(theBytes, 0, dis.available());
dis.close();
return theBytes;
} catch (IOException ex) {
}
return null;
} //()
- 1. 我应该如何将Google地图整合到我的应用程序中?
- 2. 我应该如何在Django中构建我的静态应用程序文件?
- 3. 我应该将yarn-error.log添加到我的.gitignore文件中吗?
- 4. 如何将我的java文件转换为应用程序?
- 5. 如何将我的应用程序添加到Google应用程序中
- 6. 如何将Android小部件添加到我的应用程序?
- 7. 如果我在Eclipse中开发应用程序,该如何将应用程序发送到我的手机?
- 8. 当我的应用程序加载时应该将什么内容加载到内存中?
- 9. 如何将我的应用程序添加到Eclipse中的Tomcat?
- 10. 如何将SQL文件连接到我的Bluej应用程序?
- 11. 我应该如何在应用程序域边界加载程序集以加载和卸载模块?
- 12. 如何将视频文件(mp4)添加到我的android应用程序中?
- 13. 我应该如何将xib加载到分割视图iPad目标应用程序的详细视图中?
- 14. 简单的Java应用程序......我应该使用Java EE
- 15. 如何将图标添加到我的应用程序中?
- 16. 如何将Windows应用程序附加到我的C#应用程序?
- 17. 将文件上传到远程服务器,我应该如何?
- 18. 我如何包括一个文件到我的应用程序
- 19. 如何从互联网加载txt文件到我的jsf应用程序?
- 20. 我应该如何组织我的应用程序?
- 21. 我应该如何强调测试我的web应用程序?
- 22. 我应该如何组织我的Flex应用程序?
- 23. 我应该如何测试我的Rails应用程序?
- 24. 我应该如何记录我的应用程序
- 25. 我的JS文件不会加载到我的Chrome网络应用程序
- 26. 我应该如何(应该)向服务中的线程添加处理程序
- 27. HttpClient + FileUpload如何将文件从servlet下载到我的应用程序?
- 28. 我该如何自动将数据加载到rake文件中
- 29. 我应该如何在java中引用一个文本文件?
- 30. 我应该在哪里将图像保存到我的iPhone应用程序中?
如果您正在使用Maven,如果你的文件中包含的文字,你需要注意的编码(在这里看到:http://tshikatshikaaa.blogspot.nl/2012/07/maven-how- to-access-filesdata-in.html) – JVerstry 2012-07-27 19:25:36