您的位置:首页 > 编程语言 > Java开发

Java知识点整理:第十二章:java文件系统管理、IO流(Input(输入)/Output(输出)) 、缓冲流

2016-11-17 09:24 567 查看
1.Java文件系统管理:

 1.File类
       java.io.File类用于表示文件、目录.
      
也就是说编程人员可以通过File类在程序中操作硬盘上的文件和目录(文件夹)

 
       File类只用于表示文件、目录的相关信息(文件路径.文件名称.文件大小...)不能对文件的内容进行访问.
 
        File的基本API:
 File(String) 执行文件名的构造器
 length()  文件的长度
 lastModified()  
最后的修改时间.
 getName()  获取文件的名字
 getPath()  路径
 exists()   判断是否存在
 isFile()   是不是文件
 isDirectory()
是不是目录
 mkdir()  
创建目录
 mkdirs() 同时创建多个目录
 delete() 删除
 createNewFile()
创建新文件
 listFile()  罗列所有的文件.
 
 
      2.RandomAccessFile
        RandomAccessFile类是java提供的功能丰富的文件内容访问类.它提供了从多方法来访问文件内容,既可以读取文件内容,也可以向文件写数据.
RandomAccessFile支持"随机访问"方式.可以访问文件的任意位置.
 
a.java文件模型
 
在硬盘上文件是以"byte by byte"存储的。
 
是数据的集合.
b.打开文件
  
有两种方式: rw(读写), r(只读)

   RandomAccessFile raf = new RandomAccessFile(file,"rw");
          
打开文件的时候默认文件的指针在开头:

   pointer =0
c.读取文件

  raf.read();
 
每次从文件中读取一个byte(8位)填充到int的低八位.高24位为0.
 
如果返回了-1,代表读到文件的末尾.
 
每次读取后自动移动文件指针.准备下次读取
 
d.写入方法

  raf.write(int);
 
可以将int的低8位写入到文件中.同时指针自动移动到下一个位置,准备再次写入.
e.文件读写完成以后一定要关闭文件.
   sun官方说明,如果不关闭,可能遇到一些 意想不到的错误.根据具体操作平台的不同会有不同的现象。
  
在使用过程中,切记文件读写完成后要:关闭文件.
 例如:

11111111 00000000 00000000 11111111
           java中的位移运算.
左移<<:高位舍弃,低位补0  
可能会发生符号的改变.
右移:
   
带符号右移:      >>
   
高位补原来的符号.原来是1就补1
                   原来是0就补0

     
    
不带符号右移      >>>
    
高位全部补0
 
    
不管是无符号右移还是带符号右移,移出去的全部舍弃.

2.IO流(Input(输入)/Output(输出))
:

1.IO流(Input(输入)/Output(输出))

   RandomAccessFile
   raf.read() 
输入
   raf.write()
输出
 
   java中的IO流是实现输入\输出的基础.
   
   a.InputStream
    
输入流,抽象了应用程序读取数据的方式
     OutputStream
    
输出流,抽象了应用程度写出数据的方式
  
  
输入流与输出流是相对于应用程序而言的,应用程序是参照物.
 
   b.已知子类:
     FileInputStream(文件字节输入流)
     FileOutputStream(文件字节输出流)
    
     fis:
从文件中读取字节,如果读取到文件的末尾会返回-1
     fos:往文件中写出字节数据.
        
可以实现数据的追加写入.在构造fos的时候需要设置,newFOS(file,true);

 true:代表着追加写入.
    
注意:输入\输出流使用完以后一定要close
    
    
 
2.DataInputStream/DataOutputStream(数据流)
  dis以及dos是对"字节流"的扩展,可以更方便的读写int,long,char等基本类型的数据.
 
  dis跟dos是对基本字节流的封装.
 
不能直接对文件进行访问.而是要依赖fis|fos.
 
3.序列化以及反序列化
 
序列化:将内存中数据写到硬盘上的文件中. 

        
数据--->nbyte
    int a = 5 ;
    fos.write(a)  //
低八位
    dos.writeXXX(a) //完整的32位
 
 
 
反序列化:将硬盘上文件中的内容读取到内存中
            n byte--->数据
    fis.read()
    dis.readXXX()

3.缓冲流

   BufferedInputStream  
缓冲输入流
   BufferedOutputStream 
缓冲输出流bis以及bos为IO操作提供了缓冲区.
  
一般打开文件进行写入或者读取操作时,都建议加上缓冲流.可以提供IO的性能.
 
  
缓冲流为读写都提供了缓冲区,数据读到缓冲区中,然后再写到缓冲区中.最后将缓冲区中的数据一次性写到硬盘上.
  
  
在使用的时候需要注意:
 关闭输出流之前一定要保证缓冲区中的数据全部写出.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐