第 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.1 File类文件处理是最常见的 I/O处理,在编程过程中,经常需要对文件进行操作 。 在对文件进行操作前,必须先获得有关文件的基本信息,如文件的名称,路径,文件的长度及文件是否可读可写等 。 在 Java语言中,java.io包中的 File类实现了这一功能 。
File类通过文件名列表来描述一个文件对象的属性 。
通过 File类提供的方法可以获得文件夹的基本信息,还可对文件进行复制、删除等操作。需要说明的一点是,Java语言将目录看作是一种特殊的文件。在下面的讲述中,我们统称为文件,只在需要时加以区分。
File类提供了与具体平台无关的方式来描述文件对象属性。下面是 File类中的部分主要方法。
1.构造方法文件对象的生成是通过 File类的构造文件完成的。 File类提供了以下 3种构造方法。
( 1) public File( String pathname);
参数 pathname指明新创建的文件对象对应的磁盘文件及其路径名。路径可以是绝对路径也可以是相对路径。一般地,为提高程序的可移植性,建议使用相对路径。
例如:
File myFile1=new File("test.txt");
//相对路径,在当前目录下创建新文件,名为 test.txt
File myFile2=new File("c:\\temp\\test.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 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_2
{public static void main(String args[])
{ File myFile=new File("g:\\test\\test.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.println("文件长度,"+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.out.println("新文件名:
"+file1.getName());
System.out.println(myFile+"文件是否存在?"+myFile.exists());
System.out.println("删除文件 "+file1);
file1.delete();
System.out.println(file1+"文件是否存在?"+file1.exists());}
}
运行结果见图 9-2。
图 9-2
9.2.2 文件输入输出流类
1,FileInputStream类
2,FileOutputStream类
9.2.3 文件的随机访问
1,构造方法
2,读数据方法
3,写数据方法
4,控制文件指针方法
5,其他方法
9.3 目 录 管 理例 9-6:显示当前工作目录下的目录和文件信息的程序 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&&i<20;i++)
{System.out.print(dlist[i-1]+"\t");
if(i%5==0)System.out.println();
if(i%10==0)
{System.out.println("按任意键继续 ……");
try{char 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程序中使用文件操作,将会引发安全性异常 。 在以后的编程过程中,
应注意这一点 。