Java关于IO流的介绍

JDK提供的流继承了四大类:InputStream(字节输入流)、OutputStream(字节输出流)、Reader(字符输入流)、Writer(字符输出流)。

Java关于IO流的介绍

字符流和字节流的主要区别:
      1.字节流读取的时候,读到一个字节就返回一个字节;  字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
      2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。
   只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

详解如下:

一、字节流讲解

  1.用流对文件进行处理

package com.chen.test;

import Java.io.*;
/**
 *
 * @author 陈家小帅
 *
 */
public class TestIO {
    public static void main(String[] args) {
        File file = new File("E:/java.txt");
        if (!file.exists()) {        //先判断该目录文件是否存在
            try {
                //file.mkdirs();  创建该目录下指定的文件夹
                file.createNewFile(); // 当文件不存在时,创建此文件夹
               
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //file.delete();        //删除指定的文件
        System.out.println("文件名:"+file.getName());
    }
}

2. InputStream 和 OutputStream 是两个 abstact 类,对于字节为导向的 stream 都扩展这两个基类;

inputStream中的关键方法:

read():方法是读取一个byte字节,但是返回的是int。

read(byte[]):一次性读取内容到缓冲字节数组

read(byte[],int,int):从数据流中的哪个位置offset开始读长度为len的内容到缓冲字节数组

OutputStream中的关键方法

write(int):写入一个字节到stream中

write(byte[])写入一个byte数组到stream中

write(byte[],int,int):把byte数组中从开始处写入长度为len的数据

flush():这个方法是用来刷新stream中的数据,让缓冲区中的数据强制的输出

3.FileInputStream和FileOutputStream

  FileInputStream : 从文件系统中的某个文件中获得输入字节.

Java关于IO流的介绍

  FileOutputStream : 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流.

下面是一个例子:

package com.chen.test;

import java.io.*;
/**
 *
 * @author 陈家小帅
 *
 */
public class Test4 {
    public static void main(String[] args) throws Exception {
        String path1 = "E:/WorkSpace/Mouth/bin/Dest.txt";
        String path2 = "E:/WorkSpace/Mouth/bin/D.txt";
        ReadByFIS(path1, path2);
    }
/**
    * 使用FileInputStream 将一个文件的内容写入到另一个文件中,并在控制台输出
    *
    * @param path1
    * @param path2
    * @throws Exception
    */
    public static void ReadByFIS(String path1, String path2) throws Exception {
        InputStream in = new FileInputStream(path1);        //创建文件输入流
        OutputStream out = new FileOutputStream(path2);        //创建文件输出流
        byte[] buffer = new byte[1024];                        //定义字节数组
        int len = 0;
        while ((len = in.read(buffer)) > 0) {                //将最多buffer.lenth个字节的数据读入byte数组中
            String s = new String(buffer, 0, len);            //将读入的字节转换成String类型
            System.out.println(s);                            //输出读取到的信息
            out.write(buffer, 0, len);                        //将读取到的信息写入到文件中
        }
        out.close();                    //关闭输入输出流
        in.close();
    }
}

输出结果如下:

如果想让某个字符串写入到文件中,如下所示:

package com.chen.Two;
import java.io.*;

public class Two {
    // 编写一个Java程序将111,112,113,114,115 这5个数以写入到Dest.txt文件中
    public static void main(String[] args) throws Exception {
        String str = "111,112,113,114,115";            //定义字符串
     FileOutputStream fo = new FileOutputStream("E:/WorkSpace/Mouth/bin/Dest.txt");          //创建文件输出流
        int len = 0 ;
        byte[] buffer = str.getBytes();                //将字符串转换成byte字节
        fo.write(buffer);                                //将字节数组中的数据写出
        fo.close();
  }
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/de98a15c32c69e323f65017ebb47404c.html