Java File类详解

File

在整个io包中,唯一表示与文件本身有关的类就是File类。使用File类可以进行创建或删除文件等常用操作。要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示:

public File(String pathname) à 实例化File类的时候,必须设置好路径。

File类中的主要方法和常量

No. 方法或常量 类型 描述 1 public static final String pathSeparator 常量 表示路径的分隔符(windows是:“;”) 2 public static final String separator 常量 表示路径的分隔符(windows是:“”) 3 public File(String pathname) 构造 创建File类对象,传入完整路径 4 public boolean createNewFile() throws IOException 普通 创建新文件 5 public boolean delete() 普通 删除文件 6 public boolean exists() 普通 判断文件是否存在 7 public boolean isDirectory() 普通 判断给定的路径是否是一个目录 8 public long length() 普通 返回文件的大小 9 public String[] list() 普通 列出指定目录的全部内容,只是列出了名称 10 public File[] listFiles() 普通 列出指定目录的全部内容,会列出路径 11 public boolean mkdir() 普通 创建一个目录 12 public boolean renameTo(File dest) 普通 为已有的文件重新命名

实例操作

实例操作一:创建一个新文件

package org.lxh.demo12.filedemo;
import java.io.File;
import java.io.IOException;
public class FileDemo01 {
	public static void main(String args[]) {
		File f = new File("d:\test.txt") ;	// 必须给出完整路径
		try {
			f.createNewFile() ;		// 根据给定的路径创建新文件
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

程序的问题

在不同的操作系统中,路径的分隔符表示是不一样的,例如:

    windows中使用反斜杆表示目录的分隔符:“” ; linux中使用正斜杆表示目录的分隔符:“/”。

那么,既然Java程序本身具有可移植性的特点,则在编写路径的时候最好可以根据程序所在的操作系统可以进行自动使用符合本地操作系统要求分隔符,这样才能达到可移植性的目的,要想实现这样的功能,则就需要观察File类中提供的两个常量。

package org.lxh.demo12.filedemo;
import java.io.File;
public class FileDemo02 {
	public static void main(String args[]) {
		System.out.println("pathSeparator:" + File.pathSeparator);	// 调用静态常量
		System.out.println("separator:" + File.separator);			// 调用静态常量
	}
}

修改创建文件的代码

package org.lxh.demo12.filedemo;
import java.io.File;
import java.io.IOException;
public class FileDemo03 {
	public static void main(String args[]) {
		String path = "d:" + File.separator + "test.txt" ;	// 拼凑出可以适应操作系统的路径
		File f = new File(path); 							// 必须给出路径
		try {
			f.createNewFile(); 								// 根据给定的路径创建新文件
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

实例操作二:删除一个指定的文件

package org.lxh.demo12.filedemo;
import java.io.File;
public class FileDemo04 {
	public static void main(String args[]) {
		File f = new File("d:" + File.separator + "test.txt"); // 必须给出路径
		f.delete(); // 删除文件
	}
}

在删除文件中增加判断

package org.lxh.demo12.filedemo;
import java.io.File;
public class FileDemo05 {
	public static void main(String args[]) {
		File f = new File("d:"+File.separator+"test.txt") ;	// 必须给出路径
		if(f.exists()){											// 判断文件是否存在
			f.delete() ;										// 如果存在,则删除文件
		}
	}
}

实例操作三:综合创建、删除文件的操作

给定一个文件的路径,如果此文件存在,则将其删除,如果文件不存在则创建一个新的文件 。

实现代码

package org.lxh.demo12.filedemo;
import java.io.File;
import java.io.IOException;
public class FileDemo06 {
	public static void main(String args[]) {
		File f = new File("d:" + File.separator + "test.txt"); // 文件路径
		if (f.exists()) {			// 判断文件是否存在
			f.delete();			// 删除文件
		} else {
			try {
				f.createNewFile(); 	// 创建文件
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

实例操作四:创建一个文件夹

package org.lxh.demo12.filedemo;
import java.io.File;
public class FileDemo07 {
	public static void main(String args[]) {
		File f = new File("d:" + File.separator + "mldn"); 	// 给出路径
		f.mkdir() ;					// 创建文件夹
	}
}

实例操作五:列出指定目录的全部文件

如果现在给出了一个目录,则可以直接列出目录中的内容。在File类中定义了两个列出文件夹内容的方法:

    public String[] list():列出全部名称,返回一个字符串数组; public File[] listFiles():列出完整的路径,返回一个File对象数组。

使用list()方法

package org.lxh.demo12.filedemo;
import java.io.File;
public class FileDemo08 {
	public static void main(String args[]) {
		File f = new File("d:" + File.separator); 	// 必须给出路径
		String str[] = f.list();		 	// 列出给定目录中的内容
		for (int i = 0; i < str.length; i++) {
			System.out.println(str[i]);
		}
	}
}

使用listFiles()方法

package org.lxh.demo12.filedemo;
import java.io.File;
public class FileDemo09 {
	public static void main(String args[]) {
		File f = new File("d:" + File.separator); 	// 必须给出路径
		File files[] = f.listFiles(); 		// 列出全部的文件
		for (int i = 0; i < files.length; i++) {
			System.out.println(files[i]) ;
		}
	}
}

实例操作六:判断一个给定的路径是否是目录

package org.lxh.demo12.filedemo;
import java.io.File;
public class FileDemo10 {
	public static void main(String args[]) {
		File f = new File("d:" + File.separator); 	// 路径
		if (f.isDirectory()) { 			// 判断是否是目录
			System.out.println(f.getPath() + "路径是目录。");
		} else {
			System.out.println(f.getPath() + "路径不是目录。");
		}
	}
}
经验分享 程序员 微信小程序 职场和发展