【自学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系统),系统会自动再添加一条\。

无论是单斜杠、单反斜杠,还是双斜杠、双反斜杠,程序都无法正常运行。报错信息为:

 

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

posted @ 2020-03-28 21:20  一只奶鹿  阅读(194)  评论(0)    收藏  举报