zoukankan      html  css  js  c++  java
  • FileInputStream&FileOutputStream文件复制后文件变大

    异常名称:无(运行不报任何异常)
    //异常分析:测试文件名:123.txt
    // 内容以utf-8编码编写的数据为:abc
    // 读写操作后文件内容为
    // 复制文件内容第一次:NUL*6144(空)
    // 复制文件内容第二次:NUL*1,024(空)
    // 复制文件内容第三次:NUL*911(空)

    // 原文件大小:6 字节
    // 复制文件大小第一次:6.00 KB (6,144 字节)
    // 复制文件大小第二次:1.00 KB (1,024 字节)
    // 复制文件大小第三次:911 字节
    //问题原因:一次读多个字节,写多个字节的方式复制文件,注意写每次读取到的有效字节个数
    //错误代码:
    /**
     * 代码运行不报任何异常,但文件一读一写复制文件后,文件大小会变大
     * 异常代码如下:
     * */
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    public class test {
        public static void main(String[] args) throws IOException {
            //创建输入流
            FileInputStream fis = new FileInputStream("F:\JavaTest\File\123.txt");
            //创建输出流
            FileOutputStream fos = new FileOutputStream("F:\JavaTest\File\out\复制.txt");
            //一次读取多个字节
            byte[] bytes = new byte[1024];
            int len;
            while((len = fis.read()) != -1){
                //一次写出多个字节
                fos.write(bytes);
            }
            //关流释放资源(先开后关)
            fos.close();
            fis.close();
        }
    }

    正确代码及解决方案:

    /**
     * 正确代码如下
     * */
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    public class test {
        public static void main(String[] args) throws IOException {
            //创建输入流
            FileInputStream fis = new FileInputStream("F:\JavaTest\File\123.txt");
            //创建输出流
            FileOutputStream fos = new FileOutputStream("F:\JavaTest\File\out\复制.txt");
            //一次读取多个字节
            byte[] bytes = new byte[1024];
            int len;
            while((len = fis.read(bytes)) != -1){//第一处错误
                //一次写出多个字节
                fos.write(bytes,0,len);//第二处错误
            }
            //关流释放资源(先开后关)
            fos.close();
            fis.close();
        }
    }

    //解决结果:成功!
    //错误等级:低级
  • 相关阅读:
    博客园装修行动—我设计的新首页
    按作者名称查看评论
    [新功能]通过RSS阅读收藏夹
    [公告]首页小调整
    时间的格式化
    [公告]将读书心得区改成技术书评区
    [汇报]昨天晚上博客园的程序又出现了问题
    [公告]博客园已经成功迁移至新服务器
    [好消息]博客园乔迁新居
    [公告]博客园程序升级
  • 原文地址:https://www.cnblogs.com/axibug/p/14911783.html
Copyright © 2011-2022 走看看