File类
输入流和输出流可以对文件的原始内容进行读写操作,但仅限于文件。
File类是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容,操作的对象为磁盘上的文件和目录
File类定义了一些方法来操纵文件,例如:创建、删除文件及重命名文件
File类可以修改文件或目录的属性,例如:修改读写权限、更改文件最后被修改的时间、设置文件和目录的所有者或所有用户的执行权限等
boolean createNewFile():当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。文件已存在返回false,不存在则返回true
boolean mkdir():只能创建一级目录
boolean mkdirs():可以一此创建多级目录
boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录
boolean isFile():测试此抽象路径名表示的文件是否是一个文件,和测试是否是目录方法一样,在判断之前先执行boolean exists()方法
boolean delete(): 删除此抽象路径名表示的文件或目录(只能删除空的目录)
void deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
static File[] listRoots(): 列出可用的文件系统根
File[] listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。(只能遍历一级目录)
static String separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
File类可以修改文件或目录的属性,例如:修改读写权限、更改文件最后被修改的时间、设置文件和目录的所有者或所有用户的执行权限等
boolean createNewFile():当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。文件已存在返回false,不存在则返回true
boolean mkdir():只能创建一级目录
boolean mkdirs():可以一此创建多级目录
boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录
boolean isFile():测试此抽象路径名表示的文件是否是一个文件,和测试是否是目录方法一样,在判断之前先执行boolean exists()方法
boolean delete(): 删除此抽象路径名表示的文件或目录(只能删除空的目录)
void deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
static File[] listRoots(): 列出可用的文件系统根
File[] listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。(只能遍历一级目录)
static String separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class FileRelative {
/**
* @param args
*/
public static void main(String[] args) throws IOException {
// printFilePath();
// fileBaseOp();
File file = new File("c:\\FileRelative.java");
//创建抽象路径名所对应的文件
file.createNewFile();
// getFileProperties(file);
getFileInfo(file);
File dir = new File("c:\\new File");
//ergodicFile(file);
//removeDir(dir);
rename();
dir = new File("d:\\workspace\\notepad");
List<File> list = new ArrayList<File>();
// fileToList(dir, list);
File file2 = new File(dir, "listToTxt.txt");
listToTxt(list, file2);
}
/**
* 创建File对象的几种方式(但并不实际生成相应的目录或文件)
*/
public static void printFilePath() {
File dir = new File("c:\\new File\\heima\\io");
File file1 = new File("c:\\new File\\heima\\io", "1.part");
File file2 = new File("c:\\new File\\heima\\io\\2.part");
File file3 = new File(dir, "3.part");
File file4 = new File("d:" + File.separator
+ "new File\\heima\\io\\4.part");
System.out.println(dir);
System.out.println(file1);
System.out.println(file2);
System.out.println(file3);
System.out.println(file4);
}
/**
* 新建文件和目录
*
* @throws IOException
*/
public static void fileBaseOp() throws IOException {
// 通过creatNewFile()新建文件
boolean flag = false;
File file = new File("c:\\new File\\heima\\io\\test");
flag = file.mkdir();
System.out.println("mkdir:" + flag);
flag = file.mkdirs();
System.out.println("mkdirs:" + flag);
// 删除
// detletOnExit:file or directory is deleted when virtual machine
flag = file.delete();
System.out.println("delete:" + flag);
flag = file.exists();
System.out.println("exists:" + flag);
file = new File("c:\\new file\\heima\\io\\testFile.txt");
for (int i = 0; i < 2; i++) {
flag = file.createNewFile();
System.out.println("createNewFile:" + flag);
flag = file.exists();
System.out.println("exists:" + flag);
}
}
/**
* 获取获得抽象路径名所对应的文件或目录的属性
*
* @param file
* 标准文件或目录
* @throws IOException
*/
public static void getFileProperties(File file) throws IOException {
boolean flag = true;
flag = file.exists();
// 检查file对象对应的文件是否存在
System.out.println("file.exists():" + flag);
// 判断文件是否可执行
flag = file.canExecute();
System.out.println("canExecute:" + flag);
// 判断文件是否可写
flag = file.canWrite();
System.out.println("canWrite:" + flag);
// 判断文件是否可读
flag = file.canRead();
System.out.println("canRead:" + flag);
// 判断文件是否隐藏
flag = file.isHidden();
System.out.println("isHidden:" + flag);
// 判断抽象路径名表示的文件是否是一个标准文件
flag = file.isFile();
System.out.println("isFile:" + flag);
// 判断抽象路径名表示的文件是否是一目录
flag = file.isDirectory();
System.out.println("isDirectory:" + flag);
// 判断此抽象路径名是否为绝对路径
flag = file.isAbsolute();
System.out.println("isAbsolute:" + flag);
}
/**
* 获取抽象路径名所对应的文件或目录的信息
* @param file
* @throws IOException
*/
public static void getFileInfo(File file) throws IOException {
// FileName
String name = file.getName();
System.out.println("name:" + name);
// getPath
String path = file.getPath();
System.out.println("path:" + path);
// getAbsolutePath
String absPath = file.getAbsolutePath();
System.out.println("absPath:" + absPath);
// getParentPath
String parPath = file.getParent();
System.out.println("parPath:" + parPath);
// length
long length = file.length();
System.out.println("length:" + length);
// lastModified
long time = file.lastModified();
// getTotalSpace
long space = file.getTotalSpace();
System.out.println("space:" + space);
if (space > 1024 * 1024) {
space = space / 1024 / 1024;
System.out.println("space:" + space + "MB");
} else {
System.out.println("space:" + space);
}
String lastModified = DateFormat.getInstance().format(new Date(time));
System.out.println("lastModified:" + lastModified);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
lastModified = sdf.format(new Date(time));
System.out.println("lastModified:" + lastModified);
}
/**
* 给文件重命名
*
* @throws IOException
*/
public static void rename() throws IOException {
boolean flag = false;
File file = new File("d:\\workspace\\notepad\\day20\\name.txt");
flag = file.createNewFile();
System.out.println("file.createNewFile:" + flag);
File file1 = new File("d:\\workspace\\notepad\\day20\\rename.txt");
flag = file.renameTo(file1);
System.out.println("file.renameTo:" + flag);
}
//遍历目录
public static void ergodicFile(File file) {
File[] filesList = file.listFiles();
for (File file1 : filesList) {
if (file1.isDirectory()) {
ergodicFile(file1);
} else {
System.out.println(file1);
}
}
}
//级联删除目录
public static void removeDir(File dir) {
File[] filesList = dir.listFiles();
for (File file1 : filesList) {
if (file1.isDirectory()) {
removeDir(file1);
} else {
file1.delete();
}
}
dir.delete();
}
//过滤获得指定格式文件并添加到集合
public static void fileToList(File dir, List<File> list) {
File[] files = dir.listFiles();
for (File file1 : files) {
if (file1.isDirectory()) {
fileToList(file1, list);
} else {
if (file1.toString().endsWith(".java")) {
list.add(file1);
}
}
}
}
public static void listToTxt(List<File> list, File file) throws IOException {
BufferedWriter bfw = null;
try {
bfw = new BufferedWriter(new FileWriter(file));
for (File file1 : list) {
String absPath = file1.getAbsolutePath();
bfw.write(absPath);
bfw.newLine();
bfw.flush();
}
} catch (Exception e) {
throw e;
} finally {
try {
if (bfw != null) {
bfw.close();
}
} catch (Exception e) {
throw e;
}
}
}
}
----------------------
Android、Java开发期待与您交流! ----------------------