java-IO流

IO流

IO流概述

可以将这种数据传输操作,看做一种数据的流动,按照流动的方向分为输入 Input 和 输出 Output

java 中的 IO 操作主要指的是 Java.io 包下的一些常用类的使用,通过这些常用类对数据进行读取(输入 Input)和 写出(输出 Output)

IO流的分类

按照流的方向来分,可以分为:输入流和输出流

按照流动的数据类型来分,可以分为:字节流和字符流

字节流:

  • 输入流:InputStream
  • 输出流:OutputStream

字符流:

  • 输入流:Reader
  • 输出流:Writer

字节流

java.io.OutputStream

常用方法

变量和类型方法描述
voidclose()关闭此输出流并释放与此流关联的所有系统资源。
voidflush()刷新此输出流并强制写出任何缓冲的输出字节。
voidwrite(byte[] b)b.length字节从指定的字节数组写入此输出流。
voidwrite(byte[] b, int off, int len)将从偏移量 off开始的指定字节数组中的 len字节写入此输出流。
abstract voidwrite(int b)将指定的字节写入此输出流。 |
java.io.FileOutputStream

构造方法

构造器描述
FileOutputStream(File file)创建文件输出流以写入由指定的 File对象表示的文件。
FileOutputStream(FileDescriptor fdObj)创建要写入指定文件描述符的文件输出流,该文件描述符表示与文件系统中实际文件的现有连接。
FileOutputStream(File file, boolean append)创建文件输出流以写入由指定的 File对象表示的文件。
FileOutputStream(String name)创建文件输出流以写入具有指定名称的文件。
FileOutputStream(String name, boolean append)创建文件输出流以写入具有指定名称的文件。
package txet;
import java.io.FileOutputStream;
import java.io.IOException;


public class Demo {

    public static void main(String[] args) throws IOException {
        //FileOutputStream   一个字节
        FileOutputStream fileOutputStream = new FileOutputStream("d://a.txt");
        //写入65
        fileOutputStream.write(65);
        //关闭流
        fileOutputStream.close();
        System.out.println("已经写出");
        
        
        
        //FileOutputStream  数组
        FileOutputStream fileOutputStream = new FileOutputStream("d://a.txt");
        //写入
        byte[] bytes = {65,66,67,68,69};
        fileOutputStream.write(bytes);
        //关闭流
        fileOutputStream.close();
        System.out.println("已经写出");
        
        
        //FileOutputStream
        FileOutputStream fileOutputStream = new FileOutputStream("d://a.txt");
        //写入65
        //byte[] bytes = {65,66,67,68,69};
        byte[] bytes = "ABCDEF".getBytes();
        fileOutputStream.write(bytes,1,3);
        //关闭流
        fileOutputStream.close();
        System.out.println("已经写出");


    }
}

java.io.InputStream

常用的方法

变量和类型方法描述
voidclose()关闭此输入流并释放与该流关联的所有系统资源。
abstract intread()从输入流中读取下一个数据字节int
intread(byte[] b)从输入流中读取一些字节数并将它们存储到缓冲区数组 b
java.io.FileInputStream

构造方法

构造器描述
FileInputStream(File file)通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的 File对象 file命名。
FileInputStream(String name)通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的路径名 name命名。

常用方法

变量和类型方法描述
voidclose()关闭此文件输入流并释放与该流关联的所有系统资源。
intread()从此输入流中读取一个字节的数据。
intread(byte[] b)从此输入流 b.length最多 b.length字节的数据读 b.length字节数组。
package txet;
import java.io.FileInputStream;


public class Demo {

    public static void main(String[] args) throws IOException {
        
        //FileInputStream
        FileInputStream fileInputStream = new FileInputStream("D://a.txt");
        //读取
        byte b = (byte) fileInputStream.read();
        System.out.println((char)b);
        //关闭流
        fileInputStream.close();
        
        
        
        
        //FileInputStream
        FileInputStream fileInputStream = new FileInputStream("D://a.txt");
        //读取
        while(true){
            byte b = (byte) fileInputStream.read();
            //判断读取到-1,就停止读取
            if ( b == -1){
                break;
            }
            System.out.println((char)b);
        }
        //关闭流
        fileInputStream.close();
        
        
        
        //FileInputStream
        FileInputStream fileInputStream = new FileInputStream("D://a.txt");
        //读取
        byte[] bytes = new byte[10];
        int len = fileInputStream.read(bytes);
        System.out.println(new String(bytes,0,len));

        len = fileInputStream.read(bytes);
        System.out.println(new String(bytes,0,len));

        len = fileInputStream.read(bytes);
        System.out.println(new String(bytes,0,len));
        //关闭流
        fileInputStream.close();


    }
}

字符流

java.io.Writer

常用方法

变量和类型方法描述
Writerappend(char c)将指定的字符追加到此writer。
abstract voidclose()关闭流,先冲洗它。
abstract voidflush()刷新流。
voidwrite(char[] cbuf)写一个字符数组。
abstract voidwrite(char[] cbuf, int off, int len)写一个字符数组的一部分。
voidwrite(int c)写一个字符。
voidwrite(String str)写一个字符串。
java.io.FileWriter
构造器描述
FileWriter(File file)File写一个 FileWriter ,使用平台的 default
FileWriter(FileDescriptor fd)构造一个 FileWriter给出的文件描述符,使用该平台的 default
FileWriter(File file, boolean append)在给出要写入的 FileWriter下构造 File ,并使用平台的 default charset构造一个布尔值,指示是否附加写入的数据。
FileWriter(File file, Charset charset)构造一个FileWriter给予File编写和charset 。
FileWriter(File file, Charset charset, boolean append)构造FileWriter给出File写入, charset和一个布尔值,指示是否附加写入的数据。
FileWriter(String fileName)构造一个 FileWriter给出文件名,使用平台的 default charset
FileWriter(String fileName, boolean append)使用平台的 default charset构造一个 FileWriter给定一个文件名和一个布尔值,指示是否附加写入的数据。
FileWriter(String fileName, Charset charset)构造一个FileWriter给出文件名和charset
FileWriter(String fileName, Charset charset, boolean append)构造一个FileWriter给定一个文件名, charset和一个布尔值,指示是否附加写入的数据。
package txet;
import java.io.FileWriter;


public class Demo {

    public static void main(String[] args) throws IOException {
        
        //Writer
        FileWriter filewriter = new FileWriter("D://c.txt");
        filewriter.write("龙猫");
        filewriter.close();
        
        
        //Writer
        FileWriter filewriter = new FileWriter("D://c.txt");
        filewriter.append("龙猫").append(",").append("剑圣").append(",").append("云曦");
        filewriter.close();
        


    }
}

java.io.Reader

常用方法

变量和类型方法描述
abstract voidclose()关闭流并释放与其关联的所有系统资源。
intread()读一个字符。
intread(char[] cbuf)将字符读入数组。
abstract intread(char[] cbuf, int off, int len)将字符读入数组的一部分。
java.io.FileReader

构造方法

构造器描述
FileReader(File file)使用平台 FileReader ,在 File读取时创建一个新的 FileReader
FileReader(FileDescriptor fd)使用平台 default charset创建一个新的 FileReader ,给定 FileDescriptor进行读取。
FileReader(File file, Charset charset)创建一个新的FileReader ,给出File读取和charset
FileReader(String fileName)使用平台 default charset创建一个新的 FileReader ,给定要读取的文件的 名称
FileReader(String fileName, Charset charset)给定要读取的文件的名称和FileReader ,创建一个新的FileReader
package txet;
import java.io.FileReader;


public class Demo {

    public static void main(String[] args) throws IOException {
        
        //Reader
        FileReader fileReader = new FileReader("D://a.txt");
        while (true) {
            int c = fileReader.read();
            if (c == -1){
                break;
            }
            System.out.println((char) c);
        }
        fileReader.close();
        
        
        //Reader
        FileReader fileReader = new FileReader("D://a.txt");
        char[] chars = new char[100];
        int len = fileReader.read(chars);
        System.out.println(new String(chars,0,len));
        fileReader.close();
        


    }
}

字节流转换字符流(字节流 ’装饰‘ 为 字符流)

InputStreamReader

OutputStreamWriter

package txet;
import java.io.*;


public class Demo {

    public static void main(String[] args) throws IOException {
        
        FileInputStream fis = new FileInputStream("D://a.txt");
        //将字节输入流,转换为字符输入流
        //参数1:要转换的字节流
        //参数2:指定编码名称
        InputStreamReader isr = new InputStreamReader(fis,"gbk");
        while (true) {
            int c = isr.read();
            if (c == -1){
                break;
            }
            System.out.println((char) c);
        }
        isr.close();
        
        
        FileOutputStream fos = new FileOutputStream("D://c.txt");
        //转换字符流
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write("龙猫&云曦");
        //刷新
        osw.flush();
        //关闭
        osw.close();
        


    }
}

打印流(PrintWriter)

package txet;
import java.io.*;


public class Demo {

    public static void main(String[] args) throws IOException {
        
        //打印流
        PrintStream ps = new PrintStream("D://c.txt");
        ps.println("龙猫&云曦");
        ps.println("龙猫&云曦");
        ps.println("龙猫&云曦");
        ps.close();

        PrintWriter pw = new PrintWriter("D://c.txt");
        pw.println("龙猫&云曦");
        pw.println("龙猫&云曦");
        pw.println("龙猫&云曦");
        pw.flush();
        pw.close();

        FileOutputStream fos = new FileOutputStream("D://c.txt");
        PrintWriter pw2 = new PrintWriter(fos);
        pw2.println("龙猫&云曦");
        pw2.flush();
        pw2.close();
        


    }
}

缓存读取流(BufferedReader)

将字符输入流 转换为带有缓存 可以一次读取一行的缓存字符流读取流

package txet;
import java.io.*;


public class Demo {

    public static void main(String[] args) throws IOException {
        
        FileReader fw = new FileReader("D://c.txt");
        BufferedReader br = new BufferedReader(fw);
        String s = br.readLine();
        System.out.println(s);        

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值