zoukankan      html  css  js  c++  java
  • 在Java开发工具的project中使用相对路径

    1、在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。创建文件的写法是:

    File f = new File("src/com/lavasoft/res/a.txt"); File f = new File("doc/b.txt");

    注意:路径不以“/”开头;

    脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此。

    2、通过CLASSPATH读取包内文件

    读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:

    InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");

    https://blog.51cto.com/lavasoft/265821?from=timeline
    注意:这里必须以“/”开头;有了字节流,就能读取到文件内容了。

    3、看看完整的java中用相对路径打开文件测试代码:

    import java.io.*; 
     
    /** 
    * Java读取相对路径的文件 
    * 
     
    */ 
    public class ReadFile { 
            public static void main(String[] args) { 
                    readTextA_ByClassPath(); 
                    readTextA_ByProjectRelativePath(); 
                    readTextB_ByProjectRelativePath(); 
            } 
     
            /** 
             * 通过工程相对路径读取(包内)文件,注意不以“/”开头 
             */ 
            public static void readTextA_ByProjectRelativePath() { 
                    System.out.println("-----------------readTextA_ByProjectRelativePath---------------------"); 
                    File f = new File("src/com/lavasoft/res/a.txt"); 
                    String a = file2String(f, "GBK"); 
                    System.out.println(a); 
            } 
     
            /** 
             * 通过工程相对路径读取(包外)文件,注意不以“/”开头 
             */ 
            public static void readTextB_ByProjectRelativePath() { 
                    System.out.println("-----------------readTextB_ByProjectRelativePath---------------------"); 
                    File f = new File("doc/b.txt"); 
                    String b = file2String(f, "GBK"); 
                    System.out.println(b); 
            } 
     
     
            /** 
             * 通过CLASSPATH读取包内文件,注意以“/”开头 
             */ 
            public static void readTextA_ByClassPath() { 
                    System.out.println("-----------------readTextA_ByClassPath---------------------"); 
                    InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt"); 
                    String a = stream2String(in, "GBK"); 
                    System.out.println(a); 
            } 
     
            /** 
             * 文件转换为字符串 
             * 
             * @param f             文件 
             * @param charset 文件的字符集 
             * @return 文件内容 
             */ 
            public static String file2String(File f, String charset) { 
                    String result = null; 
                    try { 
                            result = stream2String(new FileInputStream(f), charset); 
                    } catch (FileNotFoundException e) { 
                            e.printStackTrace(); 
                    } 
                    return result; 
            } 
     
            /** 
             * 文件转换为字符串 
             * 
             * @param in            字节流 
             * @param charset 文件的字符集 
             * @return 文件内容 
             */ 
            public static String stream2String(InputStream in, String charset) { 
                    StringBuffer sb = new StringBuffer(); 
                    try { 
                            Reader r = new InputStreamReader(in, charset); 
                            int length = 0; 
                            for (char[] c = new char[1024]; (length = r.read(c)) != -1;) { 
                                    sb.append(c, 0, length); 
                            } 
                            r.close(); 
                    } catch (UnsupportedEncodingException e) { 
                            e.printStackTrace(); 
                    } catch (FileNotFoundException e) { 
                            e.printStackTrace(); 
                    } catch (IOException e) { 
                            e.printStackTrace(); 
                    } 
                    return sb.toString(); 
            } 
    }

  • 相关阅读:
    hdu 1042 N!
    hdu 1002 A + B Problem II
    c++大数模板
    hdu 1004 Let the Balloon Rise
    hdu 4027 Can you answer these queries?
    poj 2823 Sliding Window
    hdu 3074 Multiply game
    hdu 1394 Minimum Inversion Number
    hdu 5199 Gunner
    九度oj 1521 二叉树的镜像
  • 原文地址:https://www.cnblogs.com/astrand/p/12073679.html
Copyright © 2011-2022 走看看