方法名称 | 说明 |
---|---|
boolean canRead() | 测试应用程序是否能从指定的文件中进行读取 |
boolean canWrite() | 测试应用程序是否能写当前文件 |
boolean delete() | 删除当前对象指定的文件 |
boolean exists() | 测试当前 File 是否存在 |
String getAbsolutePath() | 返回由该对象表示的文件的绝对路径名 |
String getName() | 返回表示当前对象的文件名或路径名(如果是路径,则返回最后一级子路径名) |
String getParent() | 返回当前 File 对象所对应目录(最后一级子目录)的父目录名 |
boolean isAbsolute() |
测试当前 File 对象表示的文件是否为一个绝对路径名。该方法消除了不同平台的差异,可以直接判断 file 对象是否为绝对路径。在 UNIX/Linux/BSD 等系统上,如果路径名开头是一条斜线/ ,则表明该 File 对象对应一个绝对路径;在 Windows 等系统上,如果路径开头是盘符,则说明它是一个绝对路径。 |
boolean isDirectory() | 测试当前 File 对象表示的文件是否为一个路径 |
boolean isFile() | 测试当前 File 对象表示的文件是否为一个“普通”文件 |
long lastModified() | 返回当前 File 对象表示的文件最后修改的时间 |
long length() | 返回当前 File 对象表示的文件长度 |
String[] list() | 返回当前 File 对象指定的路径文件列表 |
String[] list(FilenameFilter) | 返回当前 File 对象指定的目录中满足指定过滤器的文件列表 |
boolean mkdir() | 创建一个目录,它的路径名由当前 File 对象指定 |
boolean mkdirs() | 创建一个目录,它的路径名由当前 File 对象指定 |
boolean renameTo(File) | 将当前 File 对象指定的文件更名为给定参数 File 指定的路径名 |
;
。例如 java -cp test.jar;abc.jar HelloWorld
。/
。例如 C:/Program Files/Common Files
。假设在 Windows 操作系统中有一文件Windows 的路径分隔符使用反斜线“\”,而 Java 程序中的反斜线表示转义字符,所以如果需要在 Windows 的路径下包括反斜线,则应该使用两条反斜线或直接使用斜线“/”也可以。Java 程序支持将斜线当成平台无关的路径分隔符。
D:\javaspace\hello.java
,在 Java 中使用的时候,其路径的写法应该为 D:/javaspace/hello.java
或者 D:\\javaspace\\hello.java
。
C:\windows\notepad.exe
。编写 Java 程序获取并显示该文件的长度、是否可写、最后修改日期以及文件路径等属性信息。实现代码如下:
public class Test02 { public static void main(String[] args) { String path = "C:/windows/"; // 指定文件所在的目录 File f = new File(path, "notepad.exe"); // 建立File变量,并设定由f变量引用 System.out.println("C:\\windows\\notepad.exe文件信息如下:"); System.out.println("============================================"); System.out.println("文件长度:" + f.length() + "字节"); System.out.println("文件或者目录:" + (f.isFile() ? "是文件" : "不是文件")); System.out.println("文件或者目录:" + (f.isDirectory() ? "是目录" : "不是目录")); System.out.println("是否可读:" + (f.canRead() ? "可读取" : "不可读取")); System.out.println("是否可写:" + (f.canWrite() ? "可写入" : "不可写入")); System.out.println("是否隐藏:" + (f.isHidden() ? "是隐藏文件" : "不是隐藏文件")); System.out.println("最后修改日期:" + new Date(f.lastModified())); System.out.println("文件名称:" + f.getName()); System.out.println("文件路径:" + f.getPath()); System.out.println("绝对路径:" + f.getAbsolutePath()); } }在上述代码中 File 类构造方法的第一个参数指定文件所在位置,这里使用
C:/
作为文件的实际路径;第二个参数指定文件名称。创建的 File 类对象为 f,然后通过 f 调用方法获取相应的属性,最终运行效果如下所示。
C:\windows\notepad.exe文件信息如下: ============================================ 文件长度:193536字节 文件或者目录:是文件 文件或者目录:不是目录 是否可读:可读取 是否可写:可写入 是否隐藏:不是隐藏文件 最后修改日期:Mon Dec 28 02:55:19 CST 2016 文件名称:notepad.exe 文件路径:C:\windows\notepad.exe 绝对路径:C:\windows\notepad.exe
public class Test03 { public static void main(String[] args) throws IOException { File f = new File("C:\\test.txt"); // 创建指向文件的File对象 if (f.exists()) // 判断文件是否存在 { f.delete(); // 存在则先删除 } f.createNewFile(); // 再创建 } }运行程序之后可以发现,在 C 盘中已经创建好了 test.txt 文件。但是如果在不同的操作系统中,路径的分隔符是不一样的,例如:
\
表示目录的分隔符。/
表示目录的分隔符。public static void main(String[] args) throws IOException { String path = "C:" + File.separator + "test.txt"; // 拼凑出可以适应操作系统的路径 File f = new File(path); if (f.exists()) // 判断文件是否存在 { f.delete(); // 存在则先删除 } f.createNewFile(); // 再创建 }程序的运行结果和前面程序一样,但是此时的程序可以在任意的操作系统中使用。
public class Test04 { public static void main(String[] args) { String path = "C:/config/"; // 指定目录位置 File f = new File(path); // 创建File对象 if (f.exists()) { f.delete(); } f.mkdir(); // 创建目录 } }
public class Test05 { public static void main(String[] args) { File f = new File("C:/"); // 建立File变量,并设定由f变量变数引用 System.out.println("文件名称\t\t文件类型\t\t文件大小"); System.out.println("==================================================="); String fileList[] = f.list(); // 调用不带参数的list()方法 for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组 System.out.print(fileList[i] + "\t\t"); System.out.print((new File("C:/", fileList[i])).isFile() ? "文件" + "\t\t" : "文件夹" + "\t\t"); System.out.println((new File("C:/", fileList[i])).length() + "字节"); } } }
文件名称 文件类型 文件大小 =================================================== $Recycle.Bin 文件夹 4096字节 Documents and Settings 文件夹 0字节 Download 文件夹 0字节 DRIVERS 文件夹 0字节 FibocomLog 文件夹 0字节 Gateface 文件夹 0字节 GFPageCache 文件夹 0字节 hiberfil.sys 文件 3375026176字节 Intel 文件夹 0字节 KuGou 文件夹 0字节 logs 文件夹 0字节 msdia80.dll 文件 904704字节 MSOCache 文件夹 0字节 MyDownloads 文件夹 0字节 MyDrivers 文件夹 0字节 news.template 文件 417字节 NVIDIA 文件夹 0字节 OneDriveTemp 文件夹 0字节 opt 文件夹 0字节 pagefile.sys 文件 6442450944字节 PerfLogs 文件夹 0字节 Program Files 文件夹 12288字节 Program Files (x86) 文件夹 8192字节 ProgramData 文件夹 12288字节 QMDownload 文件夹 0字节 Recovery 文件夹 0字节 swapfile.sys 文件 268435456字节 System Volume Information 文件夹 12288字节 Users 文件夹 4096字节 Windows 文件夹 16384字节
java.io.FilenameFilter
接口,并在 accept() 方法中指定允许的文件类型。public class ImageFilter implements FilenameFilter { // 实现 FilenameFilter 接口 @Override public boolean accept(File dir, String name) { // 指定允许的文件类型 return name.endsWith(".sys") || name.endsWith(".txt") || name.endsWith(".bak"); } }上述代码创建的过滤器名称为 ImageFilter,接下来只需要将该名称传递给 list() 方法即可实现筛选文件。如下所示为修改后的 list() 方法,其他代码与例 4 相同,这里不再重复。
String fileList[] = f.list(new ImageFilter());
文件名称 文件类型 文件大小 =================================================== offline_FtnInfo.txt 文件 296字节 pagefile.sys 文件 8436592640字节
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有