Java输入输出流

目录

一、数据流概念

1.输入输出的概念​

2.流的概念

3.流的操作

二、常用的流分类

三、文件输入输出流

1.FileReader和FileWriter

2.FileInputStream和FileOutStream

四、复制文件


一、数据流概念

1.输入输出的概念​

        输入输出技术用于处理设备之间的数据传输,指的是程序和外部设备或者其他计算机进行数据交换的过程,比如读/写文件、网络通信等。将外部数据读取到内存中称为输入,将内存数据输出到磁盘、光盘中称为输出。

2.流的概念

        Java程序中,对于数据的输出输入操作以“流”的方式进行。java.io包下提供了各种“流”类接口,用于获取不同种类的数据,并通过标准的方法输入或输出数据。

3.流的操作

import java.io.FileInputStream;
import java.io.IOException;

public class FileInputStreamTest {
    public static void main(String[] args) {
        // 确定源
        String path = "hello.txt";
        FileInputStream fis = null;

        try {
            // 打开流
            fis = new FileInputStream(path);
            // 操作流
            int res = 0;
            while ((res = fis.read()) != -1) {
                System.out.println((char) res);// 转换类型为char
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                // 关闭流
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

二、常用的流分类

分类 字节输入流 字节输出流 字符输入流 字符输出流
抽象父类 InputStream OutputStream Reader Writer
访问文件 FileInputStream FileOutStream FileReader     FileWriter
访问数值 ByteArrayInputStream ByteArrayOutStream CharArrayReader CharArrayWriter
访问管道 PipedInputStream     PipedOutStream     PipedReader     PipedWriter
访问字符串 StringReader     StringWriter
缓冲流 BufferedInputStream     BufferedOutputStream     BufferedReader     BufferedWriter
转换流 InputStreamReader     OutputStreamWriter
对象流 ObjectInputStream     ObjectOutputStream          
装饰流 FilterInputStream     FilterOutputStream     FilterReader     FilterWriter
打印流 PrintStream          PrintWriter
数据过滤流 DataInputStream     DataOutputStream

        InputStream和Reader是所有输入流的基类,OutputStream和Writer是所有输出六的基类。InputStream和OutputStream是字节流的抽象父类,以字节为单位进行I/O操作,Reader和Writer是字符流的抽象父类,以字符为单位进行I/O操作。

三、文件输入输出流

1.FileReader和FileWriter

        FileReader和FileWriter分别继承自Reader和Writer,以字符为的那位广泛用于文件操作的节点流。FileReader类用于从文本读数据,每次度一个字符或者一个字符数组;FileWriter类用于从文本文件写数据,每次写入一个字符、一个数组或者一个字符串。

2.FileInputStream和FileOutStream

        FileInputStream和FileOutStream分别继承自InputStream和FileOutStream,以字节为单位广泛用于文件操作的节点流。FileInputStream类用于从文件读取数据,FileOutStream类用于将数据写入文件

四、复制文件

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Copy {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            // 打开流
            fis = new FileInputStream("hello.txt");//路径
            fos = new FileOutputStream("hello1.txt");
            byte[] bytes = new byte[10];
            // 操作流
            while (fis.read(bytes) != -1) {
                fos.write(bytes);
                fos.flush();
            }
            System.out.println("复制完成!");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != fos)
                    // 关闭流
                    fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (null != fis)
                    fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

你可能感兴趣的:(java)