byte[] buffer = new byte[in.available()];
int i = -1;
while ((i = bis.read(buffer)) != -1) {
//response.getOutputStream().write(buffer,0, i);
logger.info(buffer);
}
String s = new String(buffer); //获取的文件里的文本内容
String ss = changeText(s); //将文本内容修改了一下
InputStream fileInputStream = new ByteArrayInputStream(ss.getBytes("gbk"));
bis = new BufferedInputStream(fileInputStream);
byte[] bytes = new byte[bis.available()];
ServletOutputStream outputStream = response.getOutputStream();
while ((i = bis.read(bytes)) != -1) {
outputStream.write(bytes,0, i);
outputStream.flush();
}
//outputStream.write(changeText(s).getBytes("gbk"));
// outputStream.flush();
//outputStream.close();
Java从文件中读取了byte[] 转换成String 修改String以后 再转换成byte[]进行下载 文件内容显示不全
原来的内容

修改后缺了一截

@Controller
@RequestMapping("/test")
public class DownloadFileTest {
@RequestMapping("/download")
public void download(HttpServletResponse response, HttpServletRequest request) throws Exception {
//读入
File file = new File("C:\\Users\\16500\\Desktop\\life_think.txt");
FileInputStream in = new FileInputStream(file);
byte[] buffer = new byte[in.available()];
int readLength = -1;
int writeLength = -1;
readLength = in.read(buffer);
String s = new String(buffer,"UTF-8");
System.out.println(s);
//String ss = changeText(s); //将文本内容修改了一下
//写出下载
//1.设置响应类型
response.setContentType(request.getServletContext().getMimeType(file.getPath()));
//2.设置响应头的Content-Dispostion,attachment;filename=filename URLEncoder.encode() - 防止在谷歌IE上面中文文件名乱码
response.setHeader("Content-Disposition", "attachment; filename=" + "life_think.txt");
BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(s.getBytes("UTF-8")));
byte[] bytes = new byte[bis.available()];
//3.响应写出 不加1和2步骤则是响应文本
ServletOutputStream outputStream = response.getOutputStream();
while ((writeLength = bis.read(bytes)) != -1) {
outputStream.write(bytes,0, writeLength);
outputStream.flush();
}
outputStream.close();
bis.close();
in.close();
}
}
readLine()用这个方法试试