码迷,mamicode.com
首页 > 数据库 > 详细

Java核心API -- 10(File、RandomAccessFile)

时间:2015-07-04 16:52:05      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:file   randonaccessfile   seek   复制   

 

1. File文件类

    java使用File类(java.io.File)表示操作系统上文件系统中的文件或目录。换句话说,我们可以使用File操作硬盘上的文件或目录进行创建或删除。

   File可以描述文件或目录的名字,大小等信息,但不能对文件的内容操作!File类的构造器都是有参的。

    1)关于路径的描述:不同的文件系统差异较大,Linux和Windows就不同!最好使用相对路径,不要用绝对路径。

    2)“.”代表的路径:当前目录(项目所处的目录),在eclipse_workspace/project_name下,File.separator:常量,目录分隔符,推荐使用!根据系统自动识别用哪种分割符,windows中为/,Linux中为\。

    3)创建该对象并不意味着硬盘上对应路径上就有该文件了,只是在内存中创建了该对象去代表路径指定的文件。当然这个路径对应的文件可能根本不存在!

    4)createNewFile()中有throws声明,要求强制捕获异常!

    5)新建文件或目录:

        ① boolean mkdir():只能在已有的目录基础上创建目录。

        ② boolean mkdirs():会创建所有必要的父目录(不存在的自动创建)并创建该目录。

        ③ boolean createNewFile():创建一个空的新文件。

    6)创建目录中文件的两种方式:

        ① 直接指定文件需要创建的位置,并调用createNewFile(),前提是目录都要存在!

        ② 先创建一个File实例指定文件即将存放的目录,若该目录不存在,则创建所有不存在的目录,再创建一个File实例,代表data.dat文件,创建是基于上一个代表目录的File实例的。使用File(File dir,String fileName)构造方法创建File实例,然后再调用createNewFile():在dir所代表的目录中表示fileName指定的文件。


    案例17:     

        技术分享


     7)查看文件或目录属性常用方法

        ① long length():返回文件的长度。

        ② long lastModified():返回文件最后一次被修改的时间。

        ③ String getName():返回文件或目录名。 ⑧String getPath():返回路径字符串。

        ④ boolean exists():是否存在。        ⑨boolean isFile():是否是标准文件。

        ⑤ boolean isDirectory():是否是目录。 ⑩boolean canRead():是否可以读取。

        ⑥ boolean canWrite():是否可以写入、修改。

        ⑦ File[] listFiles():获取当亲目录的子项(文件或目录


    案例18:

        技术分享 


     8)删除一个文件:boolean delete():①直接写文件名作为路径和"./data.dat"代表相同文件,也可直接写目录名,但要注意第2条。②删除目录时:要确保该目录下没有任何子项后才可以将该目录删除,否则删除失败!


    案例19:

        技术分享


  

2. RandomAccessFile随机访问文件流

    可以方便的读写文件内容,但只能一个字节一个字节(byte)的读写8位。

    1)计算机的硬盘在保存数据时都是byte by byte的,字节埃着字节。

    2)RandomAccessFile打开文件模式:rw:打开文件后可进行读写操作;r:打开文件后只读。

    3)RandomAccessFile是基于指针进行读写操作的,指针在哪里就从哪里读写。

        ① void seek(long pos)方法:从文件开头到设置位置的指针偏移量,在该位置发生下一次读写操作。

        ② getFilePointer()方法:获取指针当前位置,而seek(0)则将指针移动到文件开始的位置。

        ③ int skipBytes(int n)方法:尝试跳过输入的n个字节。

    4)RandomAccessFile类的构造器都是有参的。

        ① RandomAccessFile构造方法1,参数是文件

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

        ② RandomAccessFile构造方法2,参数是字符串路径(文件名)

            RandomAccessFile raf=new RandomAccessFile("data.dat","rw");

    5)读写操作完了,不再写了就关闭:close();

    6)常用方法

        写方法

        ① write(int data):写入第一个字节,且是从低8位写。

        ② write(byte[] data):将一组字节写入。

        ③ write(byte[] data.int offset,int length):从data数组的offset位置开始写,连续写length个字节到文件中。

        ④ writeInt(int):一次写4个字节,写int值。

        ⑤ writeLong(long):一次写8个字节,写long值。

        ⑥ writeUTF(String):以UTF-8编码将字符串连续写入文件。

        读方法:

        ① int read():读一个字节,若已经读取到文件末尾,则返回-1。

        ② int read(byte[] buf):尝试读取buf.length个字节。并将读取的字节存入buf数组。返回值为实际读取的字节数。

        ③ int readInt():连续读取4字节,返回该int值

        ④ long readLong():连续读取8字节,返回该long值

        ⑤ String readUTF():以UTF-8编码将字符串连续读出文件,返回该字符串值


    案例20:

        技术分享


    7)RandomAcceccFile执行复制操作:读取一个文件,将这个文件中的每一个字节写到另一个文件中就完成了复制功能。


    案例21:

        技术分享


本文出自 “永远年轻” 博客,请务必保留此出处http://kingkongzhao.blog.51cto.com/6319491/1670902

Java核心API -- 10(File、RandomAccessFile)

标签:file   randonaccessfile   seek   复制   

原文地址:http://kingkongzhao.blog.51cto.com/6319491/1670902

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!