1、第9章 Java输入输出9.1 Java输入输出概述9.2 文 件 处 理9.3 目 录 管 理9.1 Java输入输出概述9.1.1输入输出流基本概念9.1.2输入输出流类9.1.3标准输入输出9.2 文 件 处 理9.2.1File类文件处理是最常见的I/O处理,在编程过程中,经常需要对文件进行操作。在对文件进行操作前,必须先获得有关文件的基本信息,如文件的名称、路径,文件的长度及文件是否可读可写等。在Java语言中,java.io包中的File类实现了这一功能。File类通过文件名列表来描述一个文件对象的属性。通过File类提供的方法可以获得文件夹的基本信息,还可对文件进行复制、删除等操
2、作。需要说明的一点是,Java语言将目录看作是一种特殊的文件。在下面的讲述中,我们统称为文件,只在需要时加以区分。File类提供了与具体平台无关的方式来描述文件对象属性。下面是File类中的部分主要方法。1构造方法文件对象的生成是通过File类的构造文件完成的。File类提供了以下3种构造方法。(1)public File(String pathname);参数pathname指明新创建的文件对象对应的磁盘文件及其路径名。路径可以是绝对路径也可以是相对路径。一般地,为提高程序的可移植性,建议使用相对路径。例如:File myFile1=new File(test.txt);/相对路径,在当前目
3、录下创建新文件,名为test.txtFile myFile2=new File(c:temptest.txt);/绝对路径,在C盘的java目录下创建新文件,名为test.txt(2)public File(String pathname,String name);参数pathname指明新创建的文件对象所对应的文件所在的路径,可以是绝对路径或相对路径。参数name指明新创建的文件对象所对应文件的名称。将路径和名称分开可使具有相同路径的文件具有同一个路径字符串,而且方便管理。例如:File myFile=new File(c:java,test.txt);(3)public File(File
4、 dir,String childname);参数dir是一个File类对象,它代表一个已存在的磁盘目录,该目录作为文件的路径。参数childname指明文件名。例如:File dir=new File(c:java);File myFile=new File(dir,test.txt);要对一个文件对象进行操作,不可避免地要用到表9-2列出的方法。下面我们通过一个例子来说明这些方法如何使用。例 9-2:使 用 File类 方 法 的 程 序example9_2.java。import java.io.*;public class example9_2public static void ma
5、in(String args)File myFile=new File(g:testtest.txt);System.out.println(myFile+文件存在吗?+myFile.exists();System.out.println(文件名:+myFile.getName();System.out.println(文件的相对路径:+myFile.getPath();System.out.println(文件绝对路径:+myFile.getAbsolutePath();System.out.println(上一级目录名:+myFile.getParent();System.out.prin
6、tln(文件长度:+myFile.length();System.out.println(是文件吗?+myFile.isFile();System.out.println(是目录吗?+myFile.isDirectory();System.out.println(是否可写?+myFile.canWrite();System.out.println(是否可读?+myFile.canRead();File file1=new File(file.txt);System.out.println(将文件+myFile+改名为+file1);myFile.renameTo(file1);System.o
7、ut.println(新文件名:+file1.getName();System.out.println(myFile+文件是否存在?+myFile.exists();System.out.println(删除文件+file1);file1.delete();System.out.println(file1+文件是否存在?+file1.exists();运行结果见图9-2。图图9-29.2.2文件输入输出流类1FileInputStream类2FileOutputStream类9.2.3文件的随机访问1构造方法2读数据方法3写数据方法4控制文件指针方法5其他方法9.3 目 录 管 理例9-6:显
8、示当前工作目录下的目录和文件信息的程序example9_6.java。import java.io.*;class example9_6 public static void main(String args)int i;File dir=new File(System.getProperty(user.dir);if(dir.isDirectory()System.out.println(Directory of+dir);String dlist=dir.list();for(i=1;i=dlist.length&i20;i+)System.out.print(dlisti-1+t);if
9、(i%5=0)System.out.println();if(i%10=0)System.out.println(按任意键继续);trychar ch=(char)System.in.read();catch(Exception e)System.out.println();System.out.println(共+i+个文件);运行结果见图9-6。图图9-6注意:System.getProperty()方法用于获得用户当前工作目录。最后需要说明的是,并不是所有的Java程序都支持文件或目录操作。这一点主要体现在Applet程序上。Applet程序通常是从网络上下载到本地机器上运行的,存在不可知性,因此出于安全性考虑,Java禁止Applet程序访问和读取本地文件。若试图在Applet程序中使用文件操作,将会引发安全性异常。在以后的编程过程中,应注意这一点。