java IO流相关笔记

java.io.File类用于表示文件(目录)

File类只能用于表示文件(目录)的信息(名称、大小等),不能用于内容的访问

RandomAccessFile java提供的文件内容的访问,既可以读文件也可以写文件,支持随机访问文件,可以访问文件的任意位置

(1)java文件模型

   在硬盘上的文件是byte byte byte存储的,是数据的集合

(2)打开文件

   有两种方式“rw”(读写),“r”(只读)

   RandomAccessFile raf = new RandomAccessFile(file,"rw");

   文件指针,打开文件时指针在开头pointer = 0;

(3)写方法

   raf.write(int)----->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入

扫描二维码关注公众号,回复: 10418700 查看本文章

(4)读方法

   int b = raf.read() ----->读一个字节

(5)文件读写完后一定要关闭

IO流

字节流 字符流

1.字节流

 1) InputStream抽象了应用程序读取数据的方式

  OutStream抽象了应用程序写出数据的方式

  2)EOF = End 读到-1就读到结尾

  3)输入流基本方法

    int b = in.read();读取一个字节无符号填充到int低8位,-1是EOF

    in.read(byte[] buf) 读取数据填充到字节数组buf

    in.read(byte[] buf,int start,int size) 读取数据填充到字节数组buf,从buf的start位置开始,存放size长度的数据

  4)输出流基本方法

    out.write(int b) 写出一个byte到流,b的低八位

    out.write(byte[] buf) 将buf字节数组都写入流

    out.write(byte[] buf,int start,int size) 字节数组buf从start位置开始写入size长度的字节到流

  5)FileInputStream 集体实现了在文件上读取数据

  6)FileOutputStream实现了文件中写出byte数据的方法

  7)DataOutputStream/DataInputStream

       对流功能的拓展,可以更加方便地读取int,long,字符等类型数据

       DataOutputStream

                writeInt()/writeDouble()/writeUTF()

  8)BufferedInputStream&BufferedOutputStream

        这两个流类为IO提供了带缓冲区的操作,一般打开文件进行写入或读取的时候,都会加上缓存区,这种模式提高了IO性能

        从应用程序中把一个文件输入另一个文件,相当于把一缸水倒入另一缸水

        FileOutputStream------>write()方法,相当于把水一滴一滴地转移过去

        DataOutputStream------>writeXxx()方法,相当于把水一瓢一瓢地转移过去

        BufferedOutputStream------>writeXxx()方法更加方便,相当于先一瓢一瓢把水装入桶中,然后再将桶中的水倒入水缸中(注意flush)

2.字符流

  1)Reader&Writer------->操作的是文本文件

        一次处理一个字符,字符的底层依然是基本的字节序列

        字符流的基本实现

         InputStreamReader  完成byte流解析为char流,按照编码解析

         OutputStreamReader  提供char流到byte流,按照编码处理

  2)FileReader&FileWriter------>操作文件

  3)BufferedReader 字符流的过滤器 ------>readLine()一次读一行

        BufferedWriter/PrintWriter ------>writeLine()写一行

发布了12 篇原创文章 · 获赞 0 · 访问量 2136

猜你喜欢

转载自blog.csdn.net/Kuzma_/article/details/105273493