博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础IO流(二)字节流小案例
阅读量:6591 次
发布时间:2019-06-24

本文共 3129 字,大约阅读时间需要 10 分钟。

①读取指定文件内容,按照16进制输出到控制台

    其中,Integer.toHexString(int i);是将整数i转换成16进制字符串

/**     * 读取指定文件内容,按照16进制输出到控制台     * 并且每输出10个byte换行     * @param fileName     */    public static void printHex(String fileName) throws IOException{        InputStream is = new FileInputStream(fileName);                int len,count=1;        while((len=is.read()) != -1){                       //单位数前面补零            if (len <= 0xf) {                System.out.print("0");            }                        System.out.print(Integer.toHexString(len) + " ");            if (count++%10 == 0) {                System.out.println();            }        }       in.close();    }

 ②读取指定文件内容到字节数组中,并且按照16进制输出到控制台

  两种方式:第一种是读取到一个字节数组中,第二种是读取到多个字节数组中

    注意:第二种方式中,位与 0xff的原因是:byte类型8位,int类型32位,为了避免数据转换错误,通过&0xff将高24位清零。

/**     * 读取指定文件内容到字节数组中,并且按照16进制输出到控制台     */    public static void printHexByByteArray(String fileName) throws IOException{        InputStream is = new FileInputStream(fileName);        byte[] buf = new byte[20 * 1024];        /*         * 从in中批量读取字节,放入到buf这个字节数组中         * 从第0个位置开始放,最多放buf.length个         * 返回的是读到的字节的个数         */        int bytes = is.read(buf,0,buf.length);//一次性读完,说明字节数组足够大        int count = 1;        for (int i = 0; i < bytes; i++) {            if (buf[i] <= 0xf) {                System.out.print("0");            }            System.out.print(Integer.toHexString(buf[i]) + " ");            if (count++ % 10 == 0) {                System.out.println();            }        }    }
/**     * 读取指定文件内容到字节数组中,并且按照16进制输出到控制台     */    public static void printHexByByteArray1(String fileName) throws IOException{        InputStream is = new FileInputStream(fileName);        byte[] buf = new byte[20 * 1024];                int bytes = 0;        int count = 1;        while((bytes = is.read(buf, 0, buf.length)) != -1){            for (int i = 0; i < bytes; i++) {                System.out.print(Integer.toHexString(buf[i] & 0xff) + " ");                if (count++ % 10 == 0) {                    System.out.println();                }            }        }    }

 ③拷贝文件

/**     * 文件拷贝     */    public static void copyFile(File srcFile,File destFile) throws IOException{        if (!srcFile.exists()) {            throw new IllegalArgumentException("文件:" + srcFile + "不存在");        }        InputStream in = new FileInputStream(srcFile);        OutputStream out = new FileOutputStream(destFile);        byte[] buf = new byte[8 * 1024];        int b;        while((b = in.read(buf, 0, buf.length)) != -1){            out.write(buf, 0, b);            out.flush(); //最好加上        }        in.close();        out.close();    }

 ④DataOutputStream的运用

/**     * DataOutputStreamTest     */    public static void demo(String fileName) throws IOException{        DataOutputStream dos = new DataOutputStream(new FileOutputStream(fileName));        dos.writeInt(10);        dos.writeInt(-10);        dos.writeLong(10l);        dos.writeDouble(10.5);        //采用UTF-8编码写出        dos.writeUTF("中国");        //采用utf-16be编码写出        dos.writeChars("中国");        dos.close();    }

 

转载于:https://www.cnblogs.com/deepSleeping/p/9985854.html

你可能感兴趣的文章
后台统计
查看>>
React组件: 提取图片颜色
查看>>
3D应用开发中的欧拉角和旋转矩阵
查看>>
爬虫必备技能xpath的用法和实战
查看>>
RxJava2.0的初学者必备教程(九)
查看>>
记一次omi的项目之旅
查看>>
Android API级别、代号、发布时间及平台亮点整理
查看>>
安装配置nagios
查看>>
QQ第三方授权登录(带详细源码)
查看>>
LLDP(链路层发现协议)
查看>>
Ubuntu14 添加程序启动
查看>>
我的友情链接
查看>>
windows网络安全以及常见网络***方式
查看>>
警告 初始化默认驱动器时出错“找不到运行 Active Directory Web 服务的默认服务器。”...
查看>>
JS字符串转换数字
查看>>
centos7-修改主机名
查看>>
面试宝典系列-mysql面试基础题
查看>>
spring data for mongo
查看>>
开启 URL 重写
查看>>
Journey源码分析二:整体启动流程
查看>>