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(); } 上面的执行结果是: 而是面对它们,同它们打交道,

Java读取相对路径文件

相关文章:

你感兴趣的文章:

标签云: