当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java入门

Java读取相对路径文件

Java读取相对路径文件是的前提也是相对的:文件必须位于classpath下面,否则随便一个相对文件是没法读取的。   用IDE创建一个工程,一般都会有一个src的目录,这个src就是工程的classpath目录了,只要在src目录或其子目录下的文件,在程序代码中都可以使用相对路径的方式来读取,这里的相对路径和文件系统的相对路径概念上也许有点差异。   举例来说: public class TestRead {

        public static String genWscmd(String xmlfilename) {
                InputStream in = TestRead.class.getClassLoader().getResourceAsStream(xmlfilename);
                String x = StringFileToolkit.file2String(in, "UTF-8");
                return x;
        }

        public static void main(String[] args) {
                String out = genWscmd("sys_ds.xml");
                System.out.println(out);
        }
}   1、sys_ds.xml位于src下,路径直接写其名字。但千万别写成“/sys_ds.xml”了,这是错误的,会被认为是绝对路径。   2、将文件sys_ds.xml移动到mypack包下面,则路径应该写为:mypack/sys_ds.xml,前面还是没有“/”,这点要注意。   3、必须通过ClassLoader来执行getResourceAsStream()方法。获取ClassLoader有两种方式:         InputStream in = TestRead.class.getClassLoader().getResourceAsStream(xmlfilename); 或
        InputStream in = new TestRead().getClass().getClassLoader().getResourceAsStream(xmlfilename);
  4、将一个流转换为字符串的实现如下:           /**
         * 读取输入流为一个内存字符串,保持文件原有的换行格式
         *
         * @param in            输入流
         * @param charset 文件字符集编码
         * @return 文件内容的字符串
         */
        public static String file2String(InputStream in, String charset) {
                StringBuffer sb = new StringBuffer();
                try {
                        LineNumberReader reader = new LineNumberReader(new BufferedReader(new InputStreamReader(in, charset)));
                        String line;
                        while ((line = reader.readLine()) != null) {
                                sb.append(line).append(System.getProperty("line.separator"));
                        }
                        reader.close();                        
                } catch (UnsupportedEncodingException e) {
                        log.error("读取文件为一个内存字符串失败,失败原因是使用了不支持的字符编码" + charset, e);
                } catch (IOException e) {
                        log.error("读取文件为一个内存字符串失败,失败原因是读取文件异常!", e);
                }
                return sb.toString();
        }
    上面的执行结果是:  
上一篇:J2EE基础:浅谈依赖注入实现的方法 下一篇:无!
相关内容
赞助商链接