Java从Resource中读取文本文件
2016-12-02 本文已影响0人
楚骧
1.设置Resource文件夹
Java是允许开发者将静态资源打到Jar包中,在运行时读取。开发者可以在文件夹“src/main/”下新建一个文件夹"resources",并且在IDE中将这个文件夹设置为资源文件夹,拿IntelliJ Idea为例,在项目设置资源文件夹的过程如图:
设置静态资源文件夹1).点击项目属性编辑按钮,进入项目属性编辑页;
2).点击Modules编辑子页面;
3).选择对应的项目;
4).选择对应的文件夹;
5).点击Resources按钮。
文件夹设置好了之后,就可以往这个文件夹里面复制项目中需要用到的文件了。
2.读取Resource文件夹中的内容
我们把文本文件保存到Resources以后可以使用ClassLoader来获取Resource文件所在的实际Path:
public class ResourceTest{
public static File getResourceFileByStatic(String path){
String filePath = ResourceTest.class.getClassLoader().getResource(path).getFile();
File resouce = new File();
return resouce;
}
}
下面是一段可用的从Resource读取文本文件到字符串的代码供大家参考:
public class ResourceUtil {
public static String readResource(String path) throws FileNotFoundException{
Reader reader = null;
try {
reader = getResourceReader(path);
if (reader == null) {
throw new FileNotFoundException("no file found" + path);
}
Scanner s = new Scanner(reader).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
finally {
if(null != reader){
try {
reader.close();
}
catch (IOException ex2){
throw new RuntimeException(ex2);
}
}
}
}
public static Reader getResourceReader(String name) throws FileNotFoundException{
InputStream is = null;
try {
is = ResourceUtil.class.getClassLoader().getResourceAsStream(getCPResourcePath(name));
if (is == null) {
is = new FileInputStream(new File(name));
}
return new InputStreamReader(is);
}
catch (FileNotFoundException ex){
if(null != is){
try {
is.close();
}
catch (IOException ex2){
throw new RuntimeException(ex2);
}
}
throw ex;
}
}
public static String getCPResourcePath(String name) {
if (!"/".equals(File.separator)) {
return name.replaceAll(Pattern.quote(File.separator), "/");
}
return name;
}
}