文件访问是输入输出的基础,java.io包中有些类和接口与文件有关,例如:
File类,描述本地文件系统中的一个文件
FileDescriptor类,描述一个打开的文件或Socket的文件柄。
FilenameFilter接口,文件名过滤器
RandomAccessFile类,描述一个随机访问文件。
一、 File类
File类是一个重要的文件操作和管理工具,它提供了一套独立于操作系统的方法,使用户能访问文件系统中的文件与目录信息,可以用4种方式创建File类实例。
1、 File(String path)
这种构造方法以路径目录结构创建一个File目录对象。假如有个文件的路径为C:\java\demo\abc.text,可以用以下式建立dir对象:
File dir = new File(“C:\java\demo”);
这是把目录的绝对路径作为参数,也可以用以下式建立dir对象:
File dir = new File(“demo”);
这是相对于当前C:\java目录相对路径作参数。
2、 File(StringPath,String name)
这种构造方法为具体文件创建File类实例:
File afile=new File(“demo”,”abc.text”);
对象afile指向文件\demo\abc.text.
3、 File(Filedir,String name)
这种构造方法与第二种类似,只是直接用File类实例坐目录,例如:
File afile=new File(dir,”abc.txt”);
dir就是用第一种方法产生的目录对象。
4、 File(URI uri)
这种构造方法用URI作绝对路径名。
注意:File类对象不是文件,而只是用于存放文件或目录的引用。
创建了File类对象,就可以调用File类的各种方法来得到文件和目录信息。File类的常用方法有:
Public String getName(),
返回用串表示的文件名,不包括文件所在的目录。
Public String getPath(),
返回文件的路径。
Public String getAbsolutePath(),
返回文件的绝对路径,包括文件名。
Public String getParent(),
返回父目录名,没有则返回null。
Public Boolean exists(),
若文件存在则返回真,找不到则返回假。
Public Boolean isFile(),
若File实例有效且为普通文件则返回真,否则返回假。
Public Boolean canWrite(),
若文件存在且可写则返回真,否则返回假。
Public Boolean canRead(),
若文件存在且可读则返回真,否则返回假。
Public long lastModified(),
返回文件最后被修改的时间,只用于比较修改时间,而不是打印出一个时间。
Public Boolean renameTo(File dest),
以File类的dest文件名对一个实际文件改名,改名成功返回真,否则返回假。
Public boolean mkdir(),
以File类创建一个当前目录的相对目录,若创建成功则返回真,否则返回假。
Public boolean mkdirs(),
与上一方法相同,只是它会建立整个目录结构。
Public String list(),
以File类列目录的内容,返回一组文件名,该方法只对File 类目录实例工作。
二:RandomAccessFile类
它既可以读文件,又可以写文件,还可以任意的访问文件的任何地方。有更高的灵活性。RandomAccessFile 同时实现了DataInput 和DataOutput借口,所以同时具有各种读写方法。RandomAccessFile 还支持文件指针的概念,文件指针用于指示当前在文件中的位置,当最初打开文件时,文件指针指向文件的开始位置。除了由write/read方法可以隐藏式地移动指针外,RandomAccessFile 还提供了一些方法进行显示式的指针操作。
public int length(),返回文件长度
public void seek(int pos),返回文件指针到指定的位置
public int getFilePointer(),返回文件指针的当前位置
public int skipByte(int n),使文件指针向前移动指定的n个字节。
当创建RandomAccessFile类对象时,必须指明 要读还是写文件(要写则必须能读)。有两种创建格式,如下:
1,public RandomAccessFile (String name,String mode)
这种构造方法用字符串给出文件名,并且用字符串给出访问方式。如果程序没有访问该文件的特权,会产生一个IOException。访问方式用r表示读,用rw表示读写。例如("abc.txt","r")
2,public RandomAccessFile(File file,String mode)
由于文件名与系统相关,所以用File类实例表示文件名更好。例如:
File afile = new File("demo","abc.txt"); //afile是File类对象
RandomAccessFile raf = new RandomAccessFile(afile,"rw");
创建了RandomAccessFile 对象后就可以用它调用各种读写方法对文件进行操作,RandomAccessFile 提供了所需的文件读写方法,如read(),read(byte b[]),read(byte b[],int off,int len),以及DateInput,DateOutput中的各种read、write方法,还有读写结束后关闭文件close()方法。
对于,RandomAccessFile 类中的方法,readXXX(),如果到达文件末尾,则会生成EOFException,而不是像方法read()返回-1.另外,方法readLine()返回null则表示流的结束。