java的io操作

java的io操作

1. File 类的使用

  • Java.io.File类主要是完成了文件夹管理的命名、查询文件属性和处理目录等到操作
  • 不能用于文件内容的访问
  • 常用方法:
    •  File():构造函数,一般是依据文件所在的指定位置来创建文件对象。
    • delet():从文件系统内删除该文件。 
    • deleteOnExit():程序顺利结束时从系统中删除文件。 
    • getAbsolutePath():返回文件的完整路径。
    • isDirectory():判断该路径指示的是否是文件夹。 
    • isFile():判断该路径指示的是否是文件。  
    • length():返回文件长度。 
    • list():返回文件和目录清单。 
    • mkdir():生成指定的目录。
    • mkdirs() 创建多级目录 
    • renameTo(File dest):更名文件。 

2. RandomAccessFile类的使用

  • RandomAccessFile是用来随机访问那些保存数据记录的文件的
  • 你就可以用seek( )方法来访问记录,并进行读写了
  • 这些记录的大小不必相同;但是其大小和位置必须是可知的。
  • 该类仅限于操作文件。
  • 是一个直接继承Object、独立的类。

  • 打开文件
    • 有两种模式"rw"(读写)  "r"(只读)
    • RandomAccessFile raf = new RandomeAccessFile(file,"rw")
    • 文件指针,打开文件时指针在开头 pointer = 0;

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

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

  • 移动指正方法
    • raf.seek(int );--->int 指的是跳转到的位置;

3. 字节流

  • InputStream、OutputStream
    • InputStream抽象了应用程序读取数据的方式
    • OutputStream抽象了应用程序写出数据的方式
    • EOF = End   读到-1就读到结尾
    • 输入流基本方法
      • int  b = in.read();读取一个字节无符号填充到int低八位.-1是 EOF
      • in.read(byte[] buf) 
      • in.read(byte[] buf,int start,int size)
    • 输出流基本方法
      • out.write(int b)  写出一个byte到流,b的低8位
      • out.write(byte[] buf)将buf字节数组都写入到流
      • out.write(byte[] buf,int start,int size)

  • FileInputStream、FileOutputStream 

    • 继承了InputStream、OutputStream
    • FileInputStream 具体实现了在文件上读取byte数据
    • FileOutputStream 实现了向文件中写出byte数据的方法

  • DataOutputStream、DataInputStream
    • 对"流"功能的扩展,可以更加方便的读取、写入int,long,字符等类型数据
    • 如:writeInt()/writeDouble()/writeUTF()/readInt()/readDouble()/readUTF()等

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

4. 字符流

字符有字节构成,字符流是对字符进行操作,而字符又有不同的编码方式,故在使用时应注意编码问题。

  • InputStreamReader/OutputStreamWriter
    • InputStreamReader   完成byte流解析为char流,按照编码解析
    • OutputStreamWriter  提供char流到byte流,按照编码处理
    • 其read(),write()方法一次只读写一个字符

  • FileReader/FileWriter
    • 直接对文件进行操作。

  • BufferedReader/BufferedWriter/PrintWriter
    • 优化了读写,一次性读写一行
    • BufferedReader   ---->readLine 一次读一行
    • BufferedWriter/PrintWriter   ---->写一行 

5. 对象的序列化和反序列化

  • 对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化 
  • 若要将对象进行序列化必须让对象实现序列化接口(Serializable)才能进行序列化,否则将出现异常。
  • 序列化接口无任何方法,只是一个标准。
  • 在数据类型前加transient关键字可以使该数据不进行默认序列化,但可手动序列化。

  • ObjectOutputStream/ObjectInputStream
    • 序列化流(ObjectOutputStream),是过滤流----writeObject();
    • 反序列化流(ObjectInputStream)---readObject();

你可能感兴趣的:(java,IO流)