本帖最后由 李天甲 于 2012-6-26 14:34 编辑
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- /*
- * 我的问题是这个方法执行以后为什么path数组中指定路径的文件为什么都大小都变为0kb了
- * 为什么没有完成指定的功能,到底哪出错了?该怎么修改呢??
- */
- public class test1 {
- private void write(String[] path) throws Exception {
- FileInputStream fis = null;
- FileOutputStream fos = null;
- for (int i = 0; i < path.length; i++) {
- fis = new FileInputStream(path[i]);// path是一个存储路径的数组
- fos = new FileOutputStream(path[i]);
- int b;// 记录最后一个字节的位置
- while (true) {
- b = fis.read(); // 每一次read之后都往下一个方走了,你这里b已经是等于读到最后一个的位置了
- if (b == -1)
- break;
- }
- byte[] buf = new byte[1024]; // 呵呵,虽然这里用不着,但您想过1024个装的开不?
- int len;// 默认是0呵呵,
- while ((len = fis.read(buf)) != -1) {// 将换行符写入到指定的位置 但是这里面read恒等于-1了
- // 一次读取1024个字节进去
- if (!(buf[b - 2] == 13 && buf[b - 1] == 10)) { // 这块压根不会执行的
- buf[b] = 13;
- buf[b + 1] = 10;
- len += 2;
- }
- fos.write(buf, 0, len); // 写的什么,您看读buf的时候已经到末尾了呵呵,然后len=-1.....
- }
- }
- }
- }
复制代码 b = fis.read(); // 每一次read之后都往下一个方走了,你这里b已经是等于读到最后一个的位置了
while ((len = fis.read(buf)) != -1) {// 将换行符写入到指定的位置 但是这里面read恒等于-1了因为已经read到了最后一个位置,读不到东西啊,
修改方法
你这样获取文件长度不是很理想,我一般通过file.length(),直接获取到文件的长度,然后直接生成一个file.length()+1的数组,先读取,再写入,当然也有问题,就是文件不能太大呵呵....
|