Java Project打包,发布到Web Project下之后,运行Web Project出现找不到Java Project中资源的解决办法

要想使得web项目可以访问引用的Java Project中的资源,需要在Java Project中,将需要的IO操作的文件都放置到src目录下

法一

    在Java Project中,有IO操作的类需要这样写
package cn.edu.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Writer { 
 public static void main(String[] args) throws IOException {
  System.out.println(read());
 }
 public static String read() {
 // resource/a/b/test.txt在src目录下
  InputStream resourceAsStream = Writer.class.getClassLoader().getResourceAsStream("resource/a/b/test.txt");
  BufferedReader br = new BufferedReader(new InputStreamReader(resourceAsStream));
  String readLine = null;
  try {
   readLine = br.readLine();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (br != null)
    try {
     br.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
  }
  System.out.println(readLine);
  return readLine;
 }
}
但是这种方法有一定的局限性,比如拿到路径之后获取到的返回值是一个InputStream输入流的对象,当我们使用Apache commons-io这个强大的IO包来操作文件时,该包中的方法接收的参数都是String类型的路径,而不是输入流对象。所以该方法不便于使用 commons-io包。

法二

同样是在Java Project中的类,如果有IO操作,需要这样写
package cn.edu.test;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class Writer {
 public static void main(String[] args) throws IOException {
  System.out.println(read());
 }
 public static String read() {
  // resource/a/b/test.txt存放在src目录下
  String path = Writer.class.getClassLoader().getResource("").getPath();
  path += "resource/a/b/test.txt";
  System.out.println(path);
  String readFileToString = null;
  try {
   readFileToString = FileUtils.readFileToString(new File(path));
  } catch (IOException e) {
   e.printStackTrace();
  }
  return readFileToString;
 }
}
但是这种方法也有一定的局限性,如果使用这种方式,你需要将Java Project中src目录下使用到的资源文件,原样拷贝到Web Project中的src目录下,但是使用这种方式获取的返回值就是String类型的路径名,之后可以使用强大的commons-io包了,比如FileUtils类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值