Java 读取linux上的文件

今天遇到一个问题,在Windows环境上开发,测试环境和正式环境服务器都是linux;

一个导出表格的功能,在本地没问题,发布到linux服务器就报找不到文件问题,但是模板文件已经在linux下了。刚开始以为是模板放的路径错了,,确认好几遍还是有问题。

经过大神的指导,最后发现原来linux文件的文字编码都是UTF-8。

而我们一般的读取文件的方法:

  response.setContentType("multipart/form-data");
  response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO-8859-1"));//设置网页显示的文件编码
  File file = new File(path);

这里没有指定读取文件编码的情况下,可能是拿不到文件的.

方法一:

  response.setContentType("multipart/form-data"); 
  response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO-8859-1"));//设置网页显示的文件编码
  File file = new File( new String(path.getBytes("utf-8"), "utf-8"));

以UTF-8编码去读取文件就可以拿到了。

方法二:

  读取文件路径不能有中文,就能避免此问题。

最后为了和系统其它模块保持一致,我用了第二种方法。用uuid来保存模板的文件名,同时每个模板数据库都需要保存一条记录。

原文地址:https://www.cnblogs.com/xiaomai333/p/8366532.html