• 简单Java程序向实用程序的过度:二进制文件的读写


    File I/O中常见的文件读写:

    1.字节流读写文本文件

    FileInputStream;

    FileOutputStream;

    2.字符流读写文本文件

    FileReader;

    FileWriter;

    BufferedReader;

    BufferedWriter;

    3.二进制读写文件

    DataInputStream;

    DataOutputStream;

    这里重点介绍二进制文件的读写:

    一、使用字节流类DataInputStream读写二进制文件

    DataInputStream类是FileInputstream的子类,它是FileInputStream类的扩展。

    利用DataInputStream类读取二进制文件要使用到FileInputStream类。

    具体操作步骤:

    1)引入相关的类

    2)构造一个数据流对象

    3)利用数据输入流类的方法读取二进制文件的数据

    dis.read();//读取字节数据

    4)关闭数据输入流

    dis.close();//关闭数据输入流

    二、使用字节流类DataOutputStream写二进制文件

    DataOutputStream类是FileOutputStream的子类,需要用到FileOutputStream类。

    具体操作步骤:

    1)引入相关的类

    2)构造一个数据输出流对象

    3)利用数据输出流类的方法写二进制文件的数据

    out.write(1);//将指定字节数据写入二进制文件

    4)关闭数据输出流

    out.close();

    三、编写一个Java程序读取windows目录下的win.ini文件,并输出其内容

     1 import java.io.DataInputStream;
     2 import java.io.FileInputStream;
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 
     6 /**
     7  * 编写一个Java程序读取windows目录下的win.ini文件,并输出其内容
     8  * @author Administrator
     9  *
    10  */
    11 public class Test041 {
    12 
    13     public static void main(String[] args) {
    14         DataInputStream dis = null;
    15         try {
    16             /*创建二进制输入流*/
    17             dis = new DataInputStream(new FileInputStream("C:\windows\win.ini"));
    18             
    19             /*循环读取并输出信息*/
    20             int temp;
    21             while((temp=dis.read())!=-1){
    22                 System.out.print((char)temp);
    23             }
    24         } catch (FileNotFoundException e) {
    25             e.printStackTrace();
    26         } catch (IOException e) {
    27             e.printStackTrace();
    28         }
    29         finally{
    30             if (dis!=null) {
    31                 try {
    32                     dis.close();
    33                 } catch (IOException e) {
    34                     e.printStackTrace();
    35                 }
    36             }
    37         }
    38 
    39     }
    40 
    41 }

    四、DataInputStream类与DataOutputStream类搭配使用,可以按照与平台无关的方式从流中读取基本数据类型的数据

    1.DataInputStream的readUTF()方法能读取采用utf-8字符编码的字符串;

    2.DataOutputStream的writeUTF()方法能写入采用utf-8字符编码的字符串;

    test:复制图片

     1 import java.io.DataInputStream;
     2 import java.io.DataOutputStream;
     3 import java.io.FileInputStream;
     4 import java.io.FileOutputStream;
     5 import java.io.IOException;
     6 
     7 /**
     8  * 复制图片(二进制字节流)
     9  * @author Administrator
    10  *
    11  */
    12 public class Test004 {
    13 
    14     public static void main(String[] args) {
    15         FileInputStream fis = null;
    16         FileOutputStream fos = null;
    17         DataInputStream dis = null;
    18         DataOutputStream dos = null;
    19         try {
    20             //创建输入流
    21             fis = new FileInputStream("D:\tengyicheng\timg.jpg");
    22             dis = new DataInputStream(fis);
    23             //创建输出流
    24             fos = new FileOutputStream("D:\tengyicheng\myFile\timg.jpg");
    25             dos = new DataOutputStream(fos);
    26             //循环读取录入
    27             int temp;
    28             while((temp = dis.read())!=-1){
    29                 dos.write(temp);
    30             }
    31         } catch (IOException e) {
    32             e.printStackTrace();
    33         }
    34         finally{
    35             try {
    36                 if (fis!=null) {
    37                     fis.close();
    38                 }
    39                 if (fos!=null) {
    40                     fos.close();
    41                 }
    42                 if (dis!=null) {
    43                     dis.close();
    44                 }
    45                 if (dos!=null) {
    46                     dos.close();
    47                 }
    48             } catch (IOException e) {
    49                 e.printStackTrace();
    50             }
    51         }
    52 
    53     }
    54 
    55 }
  • 相关阅读:
    [Vue]axios的使用
    Handler和Thread线程
    Android启动时闪一下黑屏或者白屏
    WebP图片格式
    ThreadLocal
    泛化,实现,依赖,关联(聚合,组合)
    深入解析AsyncTask
    Processes and Application Life Cycle
    深拷贝浅拷贝
    LCS(Longest Common Subsequence)
  • 原文地址:https://www.cnblogs.com/tengqiuyu/p/6849097.html
Copyright © 2020-2023  润新知