JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html

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

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

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

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

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

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

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

③拷贝文件

  1. /**
  2. * 文件拷贝
  3. */
  4. public static void copyFile(File srcFile,File destFile) throws IOException{
  5. if (!srcFile.exists()) {
  6. throw new IllegalArgumentException("文件:" + srcFile + "不存在");
  7. }
  8. InputStream in = new FileInputStream(srcFile);
  9. OutputStream out = new FileOutputStream(destFile);
  10. byte[] buf = new byte[8 * 1024];
  11. int b;
  12. while((b = in.read(buf, 0, buf.length)) != -1){
  13. out.write(buf, 0, b);
  14. out.flush(); //最好加上
  15. }
  16. in.close();
  17. out.close();
  18. }

④DataOutputStream的运用

(转)DataInput out Stream

  1. /**
  2. * DataOutputStreamTest
  3. */
  4. public static void demo(String fileName) throws IOException{
  5. DataOutputStream dos = new DataOutputStream(new FileOutputStream(fileName));
  6. dos.writeInt(10);
  7. dos.writeInt(-10);
  8. dos.writeLong(10l);
  9. dos.writeDouble(10.5);
  10. //采用UTF-8编码写出
  11. dos.writeUTF("中国");
  12. //采用utf-16be编码写出
  13. dos.writeChars("中国");
  14. dos.close();
  15. }

Java基础IO流(二)字节流小案例的更多相关文章

  1. 十九、Java基础--------IO流之字节流

    在上一篇文章中介绍了IO体系以及一些基本概念和字符流的相关应用,本文着重介绍字节流的相关操作. 字节流 它的操作与字符流类似,可以参与字符流的定义.读取.写入.处理异常的格式,只不过是处理的数据不同, ...

  2. Java基础-IO流对象之字节流(Stream)

    Java基础-IO流对象之字节流(Stream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在前面我分享的笔记中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现 ...

  3. Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

    Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...

  4. Java基础-IO流对象之打印流(PrintStream与PrintWriter)

    Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...

  5. Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

    Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...

  6. Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)

    Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...

  7. Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter)

    Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.转换流概述 我们之前 ...

  8. Java基础-IO流对象之File类

    Java基础-IO流对象之File类 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IO技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...

  9. 《Java基础——IO流》

    Java基础--IO流       一.字节流:   1.输入流 (InputStream) 规则: 此处用于读取txt文件中的内容.   代码: import java.io.*; public c ...

随机推荐

  1. 【.NET Core项目实战-统一认证平台】第六章 网关篇-自定义客户端授权

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我们介绍了网关使用Redis进行缓存,并介绍了如何进行缓存实现,缓存信息清理接口的使用.本篇我们将介绍如何实现网关自定义客户端授权, ...

  2. 包建强的培训课程(10):Android插件化从入门到精通

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  3. Javascript高级编程学习笔记(65)—— 事件(9)复合事件

    复合事件 复合事件是 DOM3 中新增的一类事件,用于处理 IME 的输入序列 IME(输入法编辑器)通常用于输入物理键盘上找不到的字符,而这种输入方式通常需要同时按住多个键,但最终只输入一个字符 复 ...

  4. Javascript高级编程学习笔记(28)—— BOM(2)window对象2

    今天讲一下window对象和浏览器导航,弹窗等有关的内容 导航和打开窗口 window.open() 用于导航到某个特定 url 该方法接收四个参数 1.url 2.窗口目标(当页面中有多个框架fra ...

  5. 使用 VS Code 开发和调试 .NET Core 程序

    电脑不想装几十个G的 VS2017,那就用 VS Code 吧 目标: 创建一个类库项目 Skany.Core,并用 Nuget 引用第三方组件 Hash 实现加密算法 创建一个单元测试项目 Skan ...

  6. C#连接mysql数据库的一个例子和获取本机IP的方法

    本例子是一个最初级直接连接mysql数据库的例子,实现了往数据库插入数据的操作: string MyConnectionMysql="Server=localhost;Datbase=xxx ...

  7. sql中base64解码、译码

    1.5.6版本及之后的版本的base64 主要就是两个MySQL内部函数to_base64和from_base64,使用也很简单,如下: 1)先查看MySQL的版本:mysql> select ...

  8. python之连接oracle模块(cx_Oracle)

    cx_Oracle模块下载地址如下: https://pypi.python.org/pypi/cx_Oracle/5.2.1#downloads 安装好之后就可以使用了,具体使用如下 #!/usr/ ...

  9. freemarker变量自加

    [#assign i = 0][#list dateList as item][#assign i = i + 1]<li><input type="radio" ...

  10. CentOS7.0小随笔——指令基本操作(Part.A)

    与其说是CentOS7.0的小随笔,说老实话,基本指令在每个发行版本的Linux中都基本上是一致的. Part.A部分我们讲述以下四个方面:命令行界面与图形界面.Linux系统的关闭与重启.命令行帮助 ...