/*read every 8 byte*/
ByteBuffer buffer = ByteBuffer.allocate(SERVER_BUFFER_MAXSIZE);
/*
* 通过类加载器获取项目根路径,
* 在项目中的文件路径和编译后的文件路径是不一样的,
* 需要在pom 中配置编译resources 的配置
* */
/*无法获取压缩包中的路径*/
URL url = ServerApplication.class.getClassLoader().getResource("server.properties");
System.out.println(url);
File file = new File(url.getFile());
原因是因为这里通过类加载器获取项目根路径的方法并不能去解析压缩包中的文件,因为jar包本质上其实也是一种压缩文件
解决办法:
InputStream is = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("server.properties");
因为在jar文件中不能直接通过资源路径的方式获取文件,只能通过流去获取资源,所以要通过在jar包中拿到文件流的形式操作文件