zoukankan      html  css  js  c++  java
  • JavaIO总结

    基本知识

    (1)java文件模型

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

    (2)打开文件

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

    (3) 写方法

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

    (4)读方法

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

    (5)文件读写完毕以后一定要关闭(Oracle官方说明)

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

    File类仅仅用于表示文件(文件夹)的信息(名称、大小等),不能用于文件内容的訪问

    认识文本和文本文件

     java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)
     文件是byte byte byte ...的数据序列。

    文本文件是文本(char)序列依照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果


    各种类的使用方法总结

    RandomAccessFile提供的对文件内容的訪问。既能够读文件,也能够写文件。


    RandomAccessFile支持随机訪问文件,能够訪问文件的任何位置

    RandomAccessFile提供基本类型的读写方法,能够将基本类型数据
    序列化到文件或者将文件内容反序列化为数据


     1.字节流

     1)InputStream、OutputStream
        InputStream抽象了应用程序读取数据的方式
        OutputStream抽象了应用程序写出数据的方式 
     2)EOF = End   读到-1就读到结尾
     3)输入流基本方法
       int  b = in.read();读取一个字节无符号填充到int低八位.-1是 EOF
       in.read(byte[] buf) 
       in.read(byte[] buf,int start,int size)
    4)输出流基本方法
      out.write(int b)  写出一个byte到流,b的低8位
      out.write(byte[] buf)将buf字节数组都写入到流
      out.write(byte[] buf,int start,int size)
      
     5)FileInputStream--->详细实现了在文件上读取数据
     6)FileOutputStream 实现了向文件里写出byte数据的方法
     7)DataOutputStream/DataInputStream
        对"流"功能的扩展。能够更加方面的读取int,long。字符等类型数据

     8)BufferedInputStream&BufferedOutputStream
     这两个流类位IO提供了带缓冲区的操作,一般打开文件进行写入
     或读取操作时,都会加上缓冲。这样的流模式提高了IO的性能
     从应用程序中把输入放入文件,相当于将一缸水倒入到还有一个缸中:
     FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去
     DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移”过去
     BufferedOutputStream--->write方法更方便。相当于一飘一瓢先放入桶中,再从桶中倒入到还有一个缸中,性能提高了
       
       
     2.字符流

    字符流(Reader Writer)---->操作的是文本文本文件

    字符的处理,一次处理一个字符
    字符的底层任然是主要的字节序列
    字符流的基本实现
       InputStreamReader   完毕byte流解析为char流,依照编码解析
       OutputStreamWriter  提供char流到byte流,依照编码处理  
       

       FileReader/FileWriter

       简洁的reader/writer实现


     字符流的过滤器
     BufferedReader   ---->readLine 一次读一行
     BufferedWriter/PrintWriter   ---->写一行    
       
       
    3.对象的序列化,反序列化
    对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化 
    序列化流(ObjectOutputStream),是过滤流----writeObject
    反序列化流(ObjectInputStream)---readObject


    序列化接口(Serializable)

       对象必须实现序列化接口 ,才干进行序列化。否则将出现异常
       这个接口。没有不论什么方法,仅仅是一个标准
     

     
     
     
     
     
     
     
       
       

       
  • 相关阅读:
    Ubuntu 13.04 配置Cocos2d-x记录
    Ubuntu系列Crontab日记记录
    只是为了拾起一只笔,所以写了这些
    XhProf安装教程–详细教程
    检查.gitignore语法
    JavaScript设置右下角悬浮窗
    Codeforces Round #428 (Div. 2) B
    2017 多校5 hdu 6093 Rikka with Number
    cf 834 E. Ever-Hungry Krakozyabra
    codeforces 834 D. The Bakery
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6792226.html
Copyright © 2011-2022 走看看