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