本帖最后由 yting_xmei1129 于 2013-9-23 20:56 编辑
// 废话不多说,直接上源代码,想看效果就先把注释去掉再运行、、、
package com.yting.readfile;
import java.io.*;
//使用相对路径获取文件的心得public class ReadFileDemo {
public static void main(String[] args) throws Exception { String filepath1 = "resource1.txt"; String filepath2 = "resource2.txt"; String filepath3 = "resource3.txt"; //普通方式使用相对路径获取文件 FileInputStream fis1 = new FileInputStream(filepath1); //FileInputStream fis2 = new FileInputStream(filepath2); //FileInputStream fis3 = new FileInputStream(filepath3); System.out.println(fis1.read()); //System.out.println(fis2.read()); // java.io.FileNotFoundException: resource2.txt //System.out.println(fis3.read()); // java.io.FileNotFoundException: resource3.txt //总结1 : fis2 跟 fis3 会报告 java.io.FileNotFoundException 文件未发现异常 //这种普通的方式使用相对路径获取文件的相对目录是工程名ReadFile //类加载器获取文件方式之 1 //InputStream is1 = ReadFileDemo.class.getClassLoader().getResourceAsStream(filepath1); //InputStream is2 = ReadFileDemo.class.getClassLoader().getResourceAsStream(filepath2); InputStream is3 = ReadFileDemo.class.getClassLoader().getResourceAsStream(filepath3); //System.out.println(is1.read()); //java.lang.NullPointerException //System.out.println(is2.read()); //java.lang.NullPointerException System.out.println(is3.read()); //总结2: is2 跟 is3 会报告 java.lang.NullPointerException 空指针异常 //这种使用类加载器获取文件的话相对目录是类的根目录,从这里看的话是src目录,被编译过后的目录名 //叫做bin //类加载器获取文件方式之 2 //InputStream iss1 = ReadFileDemo.class.getResourceAsStream(filepath1); InputStream iss2 = ReadFileDemo.class.getResourceAsStream(filepath2); //InputStream iss3 = ReadFileDemo.class.getResourceAsStream(filepath3); //System.out.println(iss1.read()); //java.lang.NullPointerException System.out.println(iss2.read()); //System.out.println(iss3.read()); //java.lang.NullPointerException //总结3: iss1 跟 iss 3 会报告 java.lang.NullPointerException 空指针异常 //这种使用类加载器获取文件的话相对目录是这个ReadFileDemo.java类所在的目录 //也就是这个 ReadFile/src/com/yting/readfile 目录 //以上为相对目录读取文件的方式,绝对路径的话大家都懂的,不解释了 - - ! //初学者看下可以少走弯路,个人经验,分享一下、、、 //The you smile until forever、、、、、、、、、、、、、、、、、、、、、 }
}
|