java中IO流

JAVA io流

一、IO流原理及其相关概念

  • I/O是Input/Output的缩写,IO技术用于处理设备之间的数据传输,在java程序中对于数据的输入/输出操作以“流(stream)”的方式进行
  • java.io包下提供了分钟“流”类和接口,用于获取不同种类的数据,并通过标准的方法输入或输出数据(输入和输出是相对(内存)的概念,我们站位在程序/内存的角度)

二、IO流的分类

  • 按操作数据单位不同分为:字节流(8bit)、字符流(16bit)
    • 非文本数据一般使用字节流,文本数据使用字符流(一个字符char类型占2字节)
  • 按数据流的流向不同分为:输入流、输出流
  • 按流的角色不同分为:节点流、处理流(通俗的讲:我们要洗澡,我们要将一个池子的水放到浴缸里面,我们可以直接在两者之间建一根水管,让水流进去,这就是字节流,如果我们要加快水流的速度,对水管进行一系列的改造,这个就是处理流6)
抽象基类 字节流 字符流
输入流 InputStream(字节输入 流) Reader(字符输入流)
输出流 OutputStream(字节输出流) Writer(字节输出流)
  1. 抽象类不能实例化,不一定有抽象方法
  2. JAVA中IO流涉及的类非常多,但其多而规则,所有的类都是从以上的4个抽象基类派生的
  3. 由这4个抽象基类派生的子类名称都是以其父类作为子类的后缀名
抽象基类 文件流(节点流) 缓冲流(处理流的一种)
InputStream FileInputStream BufferedInputStream
OutputStream FileOutputStream BufferedOutputStream
Writer FileWriter BufferedWriter
Reader FileReader BufferedReader
  • JVM有多种垃圾回收算法,但是对于物理连接比如:数据库连接、输入输出流、Socket连接无能为力,需要手动关闭。
package priv.stream.java;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderWriterTest {

    public static void main(String[] args) throws IOException {
        // 1.实例化File类的对象,指明要操作的文件
        File file = new File("E:\\原D盘文件\\code\\java\\基础语法\\src\\priv\\stream\\java\\hello.txt");
        System.out.println(file.getAbsoluteFile());
        //2.提供具体的流
        FileReader fr = new FileReader(file);
        //3.数据的读入
        int data = fr.read();
        while (data != -1)
        {
            System.out.print((char)data);
            data = fr.read();
        }
        //3.数据的读入(简化)
        int data;
        while(( data = fr.read() )!=-1)
        {
             System.out.print((char)data);
        }
        fr.close();
    }
}

上面的异常是通过抛出来解决,下面是通过try-catch-finally来解决(快捷键Alt+Ctrl+T)

package priv.stream.java;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderWriterTest {

    public static void main(String[] args) {
        FileReader fr = null;
        try {
            File file = new File("E:\\原D盘文件\\code\\java\\基础语法\\src\\priv\\stream\\java\\hello.txt");
            System.out.println(file.getAbsoluteFile());
            fr = new FileReader(file);
            int data ;
            while ((data = fr.read())!=-1)
            {
                System.out.print((char)data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }
        try {
            if(fr!=null)
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

说明:读入的文件一定要存在,否则就会报FileNotFoundException

上一篇:arm 架构体系


下一篇:96.FileReader文件字符输入流