首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java总结IO篇之其他IO流对象

Java总结IO篇之其他IO流对象

作者头像
张风捷特烈
发布于 2018-10-15 08:56:20
发布于 2018-10-15 08:56:20
62300
代码可运行
举报
运行总次数:0
代码可运行
零、前言:

本篇涉及到的流: 1.PrintWriter:字符打印输出流 2.PrintStream:字节打印输出流 3.SequenceInputStream :合并多个字节输入流 4.RandomAccessFile:随机操作文件 5.ObjectOutputStream与ObjectInputStream :对象的序列化流 6.DataInputStream与DataOutputStream :基本数据类型操作流 7.ByteArrayInputStream与ByteArrayOutputStream:字节数组操作流

一、PrintWriter:字符打印输出流

PrintWriter.png

1.构造方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
File file 文件
File file, String csn 文件,字符集 
String fileName 文件名 
String fileName, String csn 文件名,字符集
OutputStream out 字节输出流
OutputStream out, boolean autoFlush 字节输出流,是否自动刷新缓冲区
Writer out 字符输出流
Writer out, boolean autoFlush 字符输出流,是否自动刷新缓冲区  

无论是文件也好,字符串也好,字节输出流,字符输出流也好,总之一句话: 给我一个输出流,还你一个PrintWriter

使用:键盘录入,控制台输出大写
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class PrintStreamTest {
    public static void main(String[] args) throws IOException {
        BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
        //使用控制台输出流创建一个自动刷新缓冲区的PrintWriter对象
        PrintWriter pw = new PrintWriter(System.out,true);
        String line = null;
        while ((line = bfr.readLine()) != null) {
        //pw.write(line.toUpperCase());//不带换行
        //pw.flush();
            pw.println(line.toUpperCase());//自带换行,自带刷新
        }
        bfr.close();
        pw.close();
    }
}
使用:键盘录入,输出大写到文件

想要将键盘录入保存到文件中,只要将控制台输出流换成文件输出流即可 其他部分同上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String path = "I:\\Java\\Base\\Thinking\\src\\IOTest\\PrintWriter.txt";
PrintWriter pw = new PrintWriter(new FileWriter(path), true);

PrintWriter输出到文件.png


二、PrintStream:字节打印输出流

PrintStream.png

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
File file 文件
File file, String csn 文件,字符集
String fileName 文件名
String fileName, String csn 文件名,字符集
OutputStream out 字节输出流
OutputStream out, boolean autoFlush  字节输出流,是否自动刷新缓冲区
OutputStream out, boolean autoFlush, String encoding 字节输出流,是否自动刷新缓冲区,字符集

无论是文件也好,字符串也好,字节输出流,总之一句话: 给我一个字节输出流,还你一个PrintStream

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class PrintWriterTest {
    public static void main(String[] args) {
        try {
            int a = Integer.parseInt("a");
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java.lang.NumberFormatException: For input string: "a"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.base/java.lang.Integer.parseInt(Integer.java:652)
    at java.base/java.lang.Integer.parseInt(Integer.java:770)
    at top.toly.IO.io.其他流.PrintWriterTest.main(PrintWriterTest.java:12)

所有异常继承自:Throwable 类 其中有个不起眼的方法printStackTrace(),一般放着也没人管 但它有的重载的方法void printStackTrace​(PrintStream s) 可以自定义输出流

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class PrintStreamTest {
    public static void main(String[] args) throws FileNotFoundException {
        try {
            int a = Integer.parseInt("a");
        } catch (NumberFormatException e) {
            e.printStackTrace();//默认是输出到控制台:即System.out流
            //将信息打印到F:\log.txt文件中
            e.printStackTrace(new PrintStream("F:\\log.txt"));
        }
    }
}

输出错误日志到文件.png

也可以加入异常的时间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//将信息打印到F:\log.txt文件中
PrintStream ps = new PrintStream("F:\\log.txt");
ps.println(new SimpleDateFormat(" G yyyy/MM/dd 星期--EE a hh:mm:ss ").format(new Date().getTime()));
e.printStackTrace(ps);//默认是输出到控制台:即System.out流

三、SequenceInputStream :合并多个字节输入流
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InputStream s1, InputStream s2  两个字节流对象,先读s1,再s2
(Enumeration<? extends InputStream> e)  
1.将两个文件的数据合并到一个文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SISTest {
    public static void main(String[] args) throws Exception {
        FileInputStream fis1 = new FileInputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\FileInputStream.txt");
        FileInputStream fis2 = new FileInputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\TxtInfo.ini");
        //使用Vector获取Enumeration对象
        Vector<InputStream> vec = new Vector<>();
        vec.add(fis1);
        vec.add(fis2);
        SequenceInputStream sis = new SequenceInputStream(vec.elements());//合并输入流
        //创建输出流
        FileOutputStream fos = new FileOutputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\SequenceInputStream.txt");

        int len = 0;
        byte[] buf = new byte[1024];
        while ((len = sis.read(buf)) != -1) {
            fos.write(buf, 0, len);
        }
        sis.close();
        fos.close();
    }
}

SequenceInputStream.png

2.文件切分

当一个文件过大时,可以分割成多个小块 比如将一个1GB的电影分割成10份,每份100+M,由于字节不完整,导致无法播放 所以别人也不知道是什么电影 想看时用合并流合并一下,就能正常播放了。 可以搞个切合播放器,关闭播放器将电影切割,需要打开时碎片合并,然后就神不知鬼不觉。

目标文件Activity.md --7.34 KB (7,521 字节),按3KB大小切

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SplitFile {
    public static void main(String[] args) throws Exception {
        String pathS = "I:\\Java\\Base\\Thinking\\src\\IOTest\\Activity.md";
        File fileS = new File(pathS);
        FileInputStream fis = new FileInputStream(pathS);
        //获取待切分文件名,以它作文文件夹,放入切分后的
        File parent = new File(fileS.getParentFile().getAbsolutePath()
                + File.separator + fileS.getName().split("\\.")[0]);
        parent.mkdir();
        int count = 0;
        int len = 0;
        byte[] buf = new byte[1024 * 3];//每份3kb,最后一份小于或等于3kb
        while ((len = fis.read(buf)) != -1) {
            File fileT = new File(parent, (count++) + ".temp");
            FileOutputStream fos = new FileOutputStream(fileT);
            fos.write(buf, 0, len);
            fos.close();
        }
        fis.close();
    }
}

切割文件.png

合并

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SISTest {
    public static void main(String[] args) throws Exception {
        FileInputStream fis1 = new FileInputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\Activity\\0.temp");
        FileInputStream fis2 = new FileInputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\Activity\\1.temp");
        FileInputStream fis3 = new FileInputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\Activity\\2.temp");
        //使用Vector获取Enumeration对象
        ArrayList<InputStream> list = new ArrayList<>();
        list.add(fis1);
        list.add(fis2);
        list.add(fis3);
        //基于ArrayList合并流:需自定义Enumeration
        final Iterator<InputStream> it = list.iterator();
        Enumeration<InputStream> en = new Enumeration<>() {
            @Override
            public boolean hasMoreElements() {
                return it.hasNext();
            }
            @Override
            public InputStream nextElement() {
                return it.next();
            }
        };
        SequenceInputStream sis = new SequenceInputStream(en);//合并输入流
        //创建输出流
        FileOutputStream fos = new FileOutputStream("I:\\Java\\Base\\Thinking\\src\\IOTest\\Activity\\Activity.md");
        int len = 0;
        byte[] buf = new byte[1024];
        while ((len = sis.read(buf)) != -1) {
            fos.write(buf, 0, len);
        }
        sis.close();
        fos.close();
    }
}

四、对象的序列化流

使用ObjectOutputStream将对象序列化成为数据输出-->将对象持久存储 使用ObjectInputStream进行读取序列化的数据-->恢复先前对象 只能序列化堆中的对象,static修饰的成员变量不能被序列化 transient修饰的成员变量,即使在堆内存中也不会被序列化

1、ObjectOutputStream :对象的序列化输出流
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 private static void writeObject() throws IOException {
     String path = "I:\\Java\\Base\\Thinking\\src\\IOTest\\ObjectOutputStream.txt";
     ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));
     //Person需要序列化implements Serializable:否则ERROR----NotSerializableException
     Person toly = new Person("捷特", 24);
     oos.writeObject(toly);
     oos.close();
 }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Person implements Serializable {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //get()、set()、toSring()省略
}

将对象序列化到文件中.png

2、ObjectInputStream :对象的序列化输入流

相当于给个文件给你,你直接读出来一个对象,创建,赋值什么的都已经搞定了 对于十分复杂的对象序列化还是很方便的,但由于是IO,相对比较耗时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private static void readObject() throws IOException, ClassNotFoundException {
    String path = "I:\\Java\\Base\\Thinking\\src\\IOTest\\ObjectOutputStream.txt";
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));
    Person toly = (Person) ois.readObject();
    System.out.println(toly);//Person{name='捷特', age=24}

五、RandomAccessFile:随机操作文件

1.该类不是算是IO体系中子类。而是直接继承自Object。 2.但是它是IO包中成员。因为它具备读和写功能,内部封装字节输入流和输出流。 3.内部封装数组,通过指针对数组的元素进行操作,getFilePointer获取指针位置,通过seek改变指针的位置 4.只能操作磁盘文件,

构造方法:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
File file, String mode     rw :读写模式   r : 只读 
String name, String mode    

1.文件写入
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class RAF_Test {
    public static void main(String[] args) throws IOException {
        String path = "I:\\\\Java\\\\Base\\\\Thinking\\\\src\\\\IOTest\\RandomAccessFile.txt";

        RandomAccessFile raf = new RandomAccessFile(path, "rw");
        raf.write("张风捷特烈".getBytes());
        raf.write(38);
        raf.write(527654);
        raf.close();
    }
}

RandomAccessFile.png

可见38和527654两个int值以&字符展现出来,utf-8码表第38为是&这情有可原,527654怎么也来插一脚 众所周知,一个int占4个字节,一个字节是8位,也就是一个int占32位,转换成二进制即下面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
3366
0000 0000 0000 1000 0000 1101 0010 0110
38
0000 0000 0000 0000 0000 0000 0010 0110
RandomAccessFile写入时int只写入低8位(因为字符写入,一次只能写一个字节即8),即0010 0110

解决方法:将一个int分为4次来读,每次读一个字节(8位),写入文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
raf.writeInt(527654);//RandomAccessFile内部已经封装

RandomAccessFile2.png

2.读取
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RandomAccessFile rafR = new RandomAccessFile(path, "r");
        byte[] buf = new byte[9];//一个utf-8汉字占三个字节,这里一次读三个汉字
        rafR.read(buf);
        System.out.println(new String(buf));//张风捷
        //这里用8,因为两个汉字3*2=6字节,加上2个&&一共8个字节。
        byte[] buf2 = new byte[8];
        rafR.read(buf2);
        System.out.println(new String(buf2));//特烈&&
        //读取int值:如果上面不是8,而是9,那么527654的字节就不完整,会报错
        System.out.println(rafR.readInt());//527654

字节显示.png

3.seek调节指针读取
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RandomAccessFile rafR = new RandomAccessFile(path, "r");
rafR.seek(3);//将读取的指针移到第4个字节
byte[] buf = new byte[3];
rafR.read(buf);
System.out.println(new String(buf));//风
4.seek调节指针写出
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String path = "I:\\\\Java\\\\Base\\\\Thinking\\\\src\\\\IOTest\\RandomAccessFile.txt";
RandomAccessFile rafRW = new RandomAccessFile(path, "rw");
rafRW.write("张风捷特".getBytes());
rafRW.write(38);
rafRW.write(527654);
rafRW.writeInt(527654);
rafRW.seek(40);
rafRW.write("巫缨".getBytes());
rafRW.close();

移动指针写数据.png


六、DataInputStream与DataOutputStream:基本数据类型操作流

DataXXStream.png


1.写出操作
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private static void write() throws IOException {
    DataOutputStream dos = new DataOutputStream(new FileOutputStream(path));
    dos.writeBoolean(true);//1字节
    dos.writeInt(3366);//4字节
    dos.writeFloat(3.14f);//4字节
    dos.close();
}

DataOutputStream.png

2.读取操作
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DataInputStream dis = new DataInputStream(new FileInputStream(path));
//注意按添加的顺序读取
System.out.println(dis.readBoolean());//true
System.out.println(dis.readInt());//3366
System.out.println(dis.readFloat());//3.14

七:ByteArrayInputStream与ByteArrayOutputStream:字节数组操作流

ByteArrayInputStream :在构造的时候,需要数据源:一个字节数组,缓冲区会随数据自动增长。 ByteArrayOutputStream: 在构造的时候,该对象中已经内部封装了可变长度的字节数组,是数据目的地。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class BAIS_BAOS_Test {
    public static void main(String[] args) throws IOException {
        ByteArrayInputStream bais = new ByteArrayInputStream("张风捷特烈".getBytes());
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        System.out.println(baos.size());//0
        int by = 0;
        while ((by = bais.read()) != -1) {
            baos.write(by);
        }
        System.out.println(baos.size());//15 = 3 * 5
        //写到控制台
        baos.writeTo(System.out);//张风捷特烈
        //写到文件
        String path = "I:\\Java\\Base\\Thinking\\src\\IOTest\\ByteArrayOutputStream.txt";
        baos.writeTo(new FileOutputStream(path));
    }
}

其他几个操作类似,顺便提一下

IO

流类型

操作数据

ByteArrayInputStream

输入流I

字节流

字节数组

ByteArrayOutputStream

输出流O

字节流

字节数组

CharArrayReader

输出流I

字符流

字符数组

CharArrayWriter

输出流O

字符流

字符数组

StringReader

输出流I

字符流

字符串

StringWriter

输出流O

字符流

字符串


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.10.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
JAVA入门学习九
描述:序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时将从被整合的第一个流开始读, 读完一个之后继续读第二个以此类推。 原因:由于多个输入流写入到一个输出流,代码重复性高则采用序列流进行输出; 基础语法:
全栈工程师修炼指南
2020/10/23
4240
Java学习笔记——IO流
File中的方法,仅涉及到如何创建、删除、重命名等等。只要涉及文件内容的,File是无能为力的,必须由io流来完成。
梦飞
2022/06/23
3490
16.IO之其他流
第一  打印流 一、概述: 该流提供了打印方法,可以将各种数据类型的数据都原样打印 原理将97先变成字符保持原样将数据打印到目的地 1、字节打印流:PrintStream  构造函数可以接收的参数类型: 1)file对象。File 2)字符串路径。String 3)字节输出流。OutputStream 2、字符打印流:PrintWriter 构造函数可以接收的参数类型: 1)file对象。File 2)字符串路径。String 3)字节输出流。OutputStream 4)字符输出流,Writer。  
六月的雨
2018/05/14
7030
Java基础笔记22
22.01_IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: SequenceInputStream(InputStream, InputStream) FileInputStream fis1 = new FileInputStream("a.txt"); //创建输入流对象,关联a.txt FileInputStream fi
dreamkong
2018/06/21
5050
java基础io流——配角也风流(不求甚解)
PrintStream是OutputStream的子类,PrintWriter是Writer的子类,两者处于对等的位置上,所以它们的API是非常相似的。
100000860378
2018/09/13
6370
Java总结IO篇之字节流与字符流转化
本篇接上篇:Java中的字符流,流的读写的细节参考上篇 本篇讲述字节流相关话题,包括字节流的读取与写出,字节流转化为字符流 1.明确是否是纯文本:纯文本 ? 字符流: 字节流 2.明确数据来源
张风捷特烈
2018/10/11
1.6K0
Java总结IO篇之字节流与字符流转化
Java IO流经典练习题
本文对javaIO流的13道经典的练习题做解答,里面有详细的思路解析,做题时最好养成先写思路在编程的习惯。
全栈程序员站长
2022/06/29
7531
IO流你了解多少
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/02
3580
IO流你了解多少
编程语言的基础——搞定JavaIO
关键字:IO基础,JUnit生命周期,字节流,字符流,字符编码,对象流,序列化,反序列化 Java I/O 流是一组有顺序的,有起点和终点的字节集合。是对设备文件间数据传输的总称和抽象。 在IO中涉及的设备文件包括文件、控制台、网络链接等,这其中又根据流的方向可以将两端的设备文件分为数据源对象和接收端对象 数据源对象:有能力产出数据 接收端对象:有能力接收数据 而IO流实际上屏蔽了在实际设备中的处理数据的细节,这些处理方式也叫通信方式可以包括顺序、随机存取、缓冲、二进制、按字符、按字节、按行等。 字节
文彬
2018/05/08
1.5K0
14 Java IO流
创建一个 FileWriter 对象,该文件会在指定目录下创建. 如果同名则覆盖, 除非构造方法第二个参数append 为 true; 由此可得默认为false.
acc8226
2022/05/17
4810
14 Java IO流
java中IO流详细解释?
BufferedReader的readLine()&BufferedWriter的newLine()方法
技术从心
2019/08/07
1.8K0
Java I/O流输入输出,序列化,NIO,NIO.2
Java IO流 File类: File类是java.io包下代表和平台无关的文件和目录,File不能访问文件内容本身。 File类基本操作: System.out.println("判断文件是否存在:"+file.exists());//判断文件是否存在,返回Boolean值 System.out.println("创建文件夹:"+file.mkdir());//创建文件夹,只能创建一层,返回Boolean值 System.out.println("文件目录
二十三年蝉
2018/07/05
1.6K0
十五:IO流_什么是io流
计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示,并一一对应,形成一张表。这就是编码表。
全栈程序员站长
2022/11/01
1.3K0
十五:IO流_什么是io流
08 - JavaSE之IO流
JAVA流式输入输出原理:可以想象成一根管道怼到文件上,另一端是我们程序,然后流的输入输出都是按照程序本身作为第一人称说明的。比如 input,对于我们程序来说就是有数据输入我们程序,output就是我们程序输出数据到文件等。对象不能搞错了,否则就南辕北辙了。
Daotin
2018/08/31
4700
JavaSE(十二)之IO流的字节流(一)
前面我们学习的了多线程,今天开始要学习IO流了,java中IO流的知识非常重要。但是其实并不难,因为他们都有固定的套路。 一、流的概念       流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流"的方式进行。设备可以是文件,网络,内存等       流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,如果数据的流向是设备至程序称为输入流。       数据以二进制的形式在程序与设备之间流动传输,就
用户1195962
2018/01/18
9760
JavaSE(十二)之IO流的字节流(一)
Java之IO流
​ ③ File 类中涉及关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并涉及到写入的读取文件内容的操作。如果需要读取或写入的 ”终点“。
OY
2022/03/12
4980
Java之IO流
Java IO详解
java技术学习之道 每天分享各种技术文章 作者:一面千人 来源:cnblogs.com/Evsward Java I/O 流是一组有顺序的,有起点和终点的字节集合。是对设备文件间数据传输的总称和抽象。 在IO中涉及的设备文件包括文件、控制台、网络链接等,这其中又根据流的方向可以将两端的设备文件分为数据源对象和接收端对象 数据源对象:有能力产出数据 接收端对象:有能力接收数据 而IO流实际上屏蔽了在实际设备中的处理数据的细节,这些处理方式也叫通信方式可以包括顺序、随机存取、缓冲、二进制、按字符、按字节、按
Tanyboye
2018/07/02
1.2K0
Java IO结构各种流详解
花了两天时间研究了一下Java IO的流,对于各种流,加深了一下理解 首先看我做的思维导图 文件流 public class FileIO { public static void mai
汤高
2018/01/11
2.2K0
Java IO结构各种流详解
java IO流详尽解析「建议收藏」
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类
全栈程序员站长
2022/08/31
7860
java IO流详尽解析「建议收藏」
Java基础知识梳理 ——— IO流
利用 Java IO 你可以访问文件与目录,以及如何以文本格式和二进制格式来读写数据。
求和小熊猫
2020/11/25
5540
相关推荐
JAVA入门学习九
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 零、前言:
  • 一、PrintWriter:字符打印输出流
    • 1.构造方法
    • 使用:键盘录入,控制台输出大写
    • 使用:键盘录入,输出大写到文件
    • 二、PrintStream:字节打印输出流
  • 三、SequenceInputStream :合并多个字节输入流
    • 1.将两个文件的数据合并到一个文件
    • 2.文件切分
  • 四、对象的序列化流
    • 1、ObjectOutputStream :对象的序列化输出流
    • 2、ObjectInputStream :对象的序列化输入流
  • 五、RandomAccessFile:随机操作文件
    • 构造方法:
    • 1.文件写入
    • 2.读取
    • 3.seek调节指针读取
    • 4.seek调节指针写出
  • 六、DataInputStream与DataOutputStream:基本数据类型操作流
    • 1.写出操作
    • 2.读取操作
  • 七:ByteArrayInputStream与ByteArrayOutputStream:字节数组操作流
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档