程序再运行期间,可能需要从外部的存储媒介或其他程序中读入所需要的数据,这就需要使用输入流。
程序可能经常需要获取磁盘上文件的有关信息或在磁盘上创建新的文件等,这就需要学习使用File类。
创建一个File对象的构造方法有三个:
File (String filename);
File (String directoryPath, String filename);
File (File dir, String filename);
使用File(String filename)创建文件时,该文件被认为与当前应用程序在同一目录中。
文件的属性
经常使用File类的下列方法获取文件本身的一些信息。
public String getName() 获取文件的名字
public boolean canRead() 判断文件是否是可读的
public boolean canWrite() 判断文件是否可被写入
public boolean exits() 判断文件是否存在
public long length() 获取文件的长度
public String getAbsolutePath() 获取文件的绝对路径
File类对象的方法使用情况如下所示:
import java.io.File; import java.io.IOException; public class Test01 { public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("E:/test", "Test02.java"); System.out.println(file.getName() + "是可读的吗:" + file.canRead()); System.out.println(file.getName() + "的长度:" + file.length()); System.out.println(file.getName() + "的绝对路径是:" + file.getAbsolutePath()); System.out.println(); File file1 = new File("new.txt"); System.out.println("在当前目录下创建新文件" + file1.getName()); if(!file1.exists()) { try{ file1.createNewFile(); System.out.println("创建成功"); } catch(IOException exp) { } } } }
运行结果如下所示:
在写路径的时候,可以写出"E:\test"或者“E://test”,千万不可以写出"E:/test"。
目录
1.创建目录
File对象调用方法public boolean mkdir()创建一个目录,如果创建成功返回true,否则返回flase(如果该目录已经存在将返回false)。
2.列出目录中的文件
如果File对象是一个目录,那么该对象调用下列方法列出该目录的文件和子目录。
public String[] list() 用字符串形式返回目录下的全部文件。
public File[] listFiles() 用File对象形式返回目录下的全部文件
有时需要列出目录下指定类型的文件,比如.java文件
public String[] list(FilenameFilter obj) 该方法用字符串形式返回目录下的指定类型的所有文件。
public File[] listFiles(FilenameFilter obj) 该方法用File对象形式返回目录下的指定类型的所有文件。
上述两个方法的参数FilenameFilter是一个接口,该接口由一个方法:
public boolean accept(File dir, String name);
代码展示如下所示:
import java.io.File; public class Test02 { public static void main(String[] args) { // TODO Auto-generated method stub File dirFile = new File("."); FileAccept fileAccept = new FileAccept(); fileAccept.setExtendName("java"); String fileName[] = dirFile.list(fileAccept); for(String name : fileName) { System.out.println(name); } } }
import java.io.File; import java.io.FilenameFilter; public class FileAccept implements FilenameFilter{ private String extendName; public void setExtendName(String s) { extendName = "." + s; } public boolean accept(File dir, String name)//重写接口中的方法 { return name.endsWith(extendName); } }