【自学java笔记#第二十三天#】相对路径与绝对路径
选用教材:《Java核心技术卷一》
第五章 继承
有时需要读取一些资源文件,这时可以用如下的方法进行简单的资源读取操作:
1、通过相对路径来读取资源:
public class Resource { public static void main(String[] args) throws IOException { @SuppressWarnings("rawtypes") Class cl=Resource.class; URL aboutURL=cl.getResource("about.jpg");//getResource得到文件的路径 var icon=new ImageIcon(aboutURL);//ImageIcon创建一个未初始化的图像 InputStream stream=cl.getResourceAsStream//用于读取指定资源的输入流 ("biggirl.txt"); var about=new String(stream.readAllBytes(),"UTF-8");//从输入流中读取所有剩余的字节 InputStream stream2=cl.getResourceAsStream ("smallboy.txt"); var title=new String(stream2.readAllBytes(),StandardCharsets.UTF_8).trim(); JOptionPane.showMessageDialog(null, about,title,JOptionPane.INFORMATION_MESSAGE,icon); //弹出一个对话框,显示所有的参数组合在一起的消息 } }
说相对路径其实也不严谨,因为这里就是将3个文件直接放在了同一个包里。它自动就读取进去了。

2、通过绝对路径来读取资源文件:
public class Resource { public static void main(String[] args) throws IOException { @SuppressWarnings("rawtypes") Class cl=Resource.class; URL aboutURL=cl.getResource("D:\\Program Files\\Java\\eclipse\\Constants\\src\\reflection\\about.jpg");//getResource得到文件的路径 var icon=new ImageIcon(aboutURL);//ImageIcon创建一个未初始化的图像 InputStream stream=cl.getResourceAsStream//用于读取指定资源的输入流 ("D:Program Files//Java//eclipse//Constants//src//reflection//biggirl.txt"); var about=new String(stream.readAllBytes(),"UTF-8");//从输入流中读取所有剩余的字节 InputStream stream2=cl.getResourceAsStream ("D://Program Files//Java//eclipse//Constants//src//reflection//smallboy.txt"); var title=new String(stream2.readAllBytes(),StandardCharsets.UTF_8).trim(); JOptionPane.showMessageDialog(null, about,title,JOptionPane.INFORMATION_MESSAGE,icon); //弹出一个对话框,显示所有的参数组合在一起的消息 } }
按照规定,window系统的绝对路径分隔符应该是“\”,而Linux系统的分隔符是“/”。
但是在eclipse中将绝对路径复制进去(window7系统),系统会自动再添加一条\。
无论是单斜杠、单反斜杠,还是双斜杠、双反斜杠,程序都无法正常运行。报错信息为:

暂时还没有找到解决的方法,使用绝对路径相对来说也更麻烦,所以个人更倾向于第一种方法。
浙公网安备 33010602011771号