2023.2.23学习日志

一.IO流

1.什么是IO流

1. IO 表示有两个单词的缩写,对文件内容进行读写操作

I:inputStream输入流(读) O:outputStream输出流(写)

2. IO的作用:就是对文件中的内容进行操作

输入: 读操作(读取文件的内容) 输出: 写操作(往文件中写内容)

3. IO流的分类:

(1)根据流的方向:

---输入流: 程序可以从中读取数据的流

---输出流: 程序能向其中写入数据的流

(2)根据流的单位:

---字节流: 以字节为单位传输数据的流

---字符流: 以字符为单位传输数据的流

(3)根据功能

---节点流: 直接和文件进行交互

---处理流: 不是直接作用在文件上

4. IO中的4个四个基本的流: 其他的流都是在这四个流的基础上进行扩展的

InputStream:字节输入流

OutputStream:字节输出流

Reader: 字符输入流

Writer: 字符输出流

  1. IO流的顶层类的分类图

3.IOjava中输入/输出操作图

4.IO流按操作方式分类图

5.1 Writer字符输出流

它是所有字符输出流的跟类。---FileWriter

public class TestWriter {

public static void main(String[] args) throws Exception{

//字符输出流 ---指定对哪个文件(路径)进行写操作

Writer writer=new FileWriter("D:/AAA/d.txt");

String str="你好 你今天真漂亮";

writer.write(str);

writer.flush(); //刷新流

writer.close(); //关闭流资源

}

}

上面每次往文件中写内容时 就会把原来的内容覆盖了。 如何追加内容

public class TestWriter2 {

public static void main(String[] args) throws Exception{

//字符输出流 ---指定对哪个文件(路径)进行写操作

//true:表示允许追加内容到文件中

Writer writer=new FileWriter("D:/AAA/d.txt",true);

String str="Hello 易烊千玺 今天请来了";

writer.write(str);

writer.flush(); //刷新流

writer.close(); //关闭流资源

}

}

5.2 Reader字符输入流

它是所有字符输入流的根类 它的实现类有很多,我们使用FileReader实现类。


public class TestReader {
    public static void main(String[] args) throws Exception {
        //创建字符输入流对象. 作用:就是读取aaaa.txt里的内容
        Reader reader=new FileReader("D:/BBB/aaa.txt");
 
        int r=0;//表示读取字符的个数
        while ((r=reader.read())!=-1){
            System.out.print((char)r);
        }
    }
}

6.字节流

6.1字节输出流--OutputStream

它可以对任意文件进行操作,对文件进行输出操作。以字节为单位。 它是所有字节输出流的父类,FileOutputStream

  //测试字节输出流
    @Test
    public void testOutStream() throws Exception{
        OutputStream os=new FileOutputStream("D:/AAA/f.txt");
        String str="abcd";
        //把字符串转换为字节数组.
        byte[] bytes = str.getBytes();
 
        os.write(bytes);
 
        os.flush();
        os.close();
 
    }

7. 缓存流

缓存流是在基础流[InputStream OutputStream Reader Writer]之上 添加了一个缓存池功能.

BufferInutStream BufferOutputStream BufferReader BufferWriter 提高IO的效率,降低IO的次数

@Test

public void TestBuffer() throws Exception{

OutputStream out=new FileOutputStream("D:/AAA/g.txt");

BufferedOutputStream bos=new BufferedOutputStream(out);//缓存流要作用再基础流上

String str="abcdefhijglmn";

byte[] bytes = str.getBytes();

bos.write(bytes); //因为你写的内容 暂时放入缓存池中 并没有直接放入文件中。 所以文件中没有你的内容

bos.flush();//刷新缓存池---把池子中的内容输入到文件上

bos.close(); //关闭----先刷新缓冲池 再关闭流资源

}

8. 对象流--对java对象进行IO操作

为什么需要对象流?

我们现在操作IO流的时候 都是将字符串读写操作 可不可以将java对象在文件中进行读写呢? 可以的 Student st=new Student();对象

将java对象进行读写操作 意义在于持久化信息 例如: 游戏存档

因为运行的时候 所有的数据都是在运行内存中的 持久化 将运行内存的数据 保存到硬盘上 存档(写) 读档(读)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值