文件操作时的问题
来源:互联网 发布:linux启动卡在进度条 编辑:程序博客网 时间:2024/06/05 22:56
最近项目上线好久的功能 (文件下载) 突然出现了问题,经过一翻查找,发现文件二进制保存至数据库前 是完整、保存在数据库也是完整的, 但下载读取时如果是TXT文本时,由于是按数组[1024] 读取的,如果文件小于 1024 一次可以读完的话则没有问题,大于1024时 正常结束会多出一部分重复文本;
问题代码
//从DB中读取文件里流,生成文件 StringBuilder fileBuilder = new StringBuilder(); byte[] buff = new byte[1024]; BASE64Encoder encoder = new BASE64Encoder(); while (in.read(buff) > 0) { fileBuilder.append(encoder.encode(buff)); }
- 它是按每次1024长度的数组去读,按位进行插入且数组只有1个1024长度 一个一个替换,也就是说如果 文件为 1524,那么多出来的500替换在前面,后门的524 仍是上次读出来的数据;
- 于是 我们采取用一个字节数组输出流,先将读出来的内容写在流中,最后统一处理;
修改后
//从DB中读取文件里流,生成文件 StringBuilder fileBuilder = new StringBuilder(); byte[] buff = new byte[1024]; BASE64Encoder encoder = new BASE64Encoder(); bos = new ByteArrayOutputStream(); int len = -1; while ((len = in.read(buff)) != -1) { bos.write(buff, 0, len); } bos.flush(); fileBuilder.append(encoder.encode(bos.toByteArray()));
阅读全文
0 0
- 文件操作时的问题
- 文件操作eof()的问题
- c++文件操作的问题
- 文件读取操作的问题
- 文件操作EOF()的问题
- 文件操作EOF的问题
- PHP 操作文件时(文件权限问题)
- 在操作文件时遇到的乱码问题
- Java web环境操作XML文件时的路径问题
- fopen()函数对文件IO操作时的问题
- JAVA读取文件操作时路径的斜杠问题
- 文件操作函数的一些问题
- C#操作ini文件的问题
- java文件操作的一些问题
- 文件操作中遇到的问题
- 有关文件加密。。access操作的问题
- C#关于XML文件的操作问题
- C++文件操作无法写入的问题
- 基础博弈论之——简单的博弈问题【hdu1525】【Euclid‘s Game】
- 常见添加剂list
- 来自这里http://www.imooc.com/qadetail/149581?t=198457
- MATLAB显示串口接收的rgb565图像
- java中Logger.getLogger(Test.class)
- 文件操作时的问题
- 集合中按照商品价格排序,按照学生编号排序,Collections集合里的sort方法,Comparator<T>接口,Comparable<T>接口,
- Java学习 线程
- 视频内容谁来保护?阿里云视频加密技术大揭秘,打造云上视频安全体系
- Android开发中自定义按钮的形状
- webpack2 实战截图+注释
- 思想决定高度
- 查看域名是否解析成功
- \r\n