目录
File类
概述
java.util.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找.删除等操作
Java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作。
1. File类和四大家族没有关系,所有File类不能完成文件的读写
2. File对象代表,文件和路径名的抽象表示形式
3. 一个File对象可能是目录也可能是文件,File只是一个路径名的抽象表示形式
4. 掌握File类的常用方法
boolean exists() | 测试此抽象路径名表示的文件或目录是否存在 |
boolean createNewFile() | 以文件形式创建 |
boolean mkdir() | 创建此抽象路径名指定的目录 |
boolean mkdirs() | 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录 |
String getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
String getParent() | 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null |
String getName() | 返回由此抽象路径名表示的文件或目录的名称 |
boolean isDirectory() | 测试此抽象路径名表示的文件是否是一个目录 |
boolean isFile() | 测试此抽象路径名表示的文件是否是一个标准文件 |
long length() | 返回由此抽象路径名表示的文件的长度 |
long lastModified() | 返回此抽象路径名表示的文件最后一次被修改的时间 |
File类是一个与系统无关的类,,任何的操作系统都可以使用这个类中的方法.
构造方法
-
public File(String pathname) 根据 parent 抽象路径名和 child 路径名字符串创建一个新
File
实例。 -
如果字符串代表的文件存在那么就指向这个文件,如果不存在,就会创建该文件
-
public File(String parent,String child):根据parent路径名字符串和child路径名字字符串创建一个新File实例
代码实例:
常用API方法
package File;
import java.io.File;
import java.io.IOException;
public class FileTest01 {
public static void main(String[] args) throws IOException {
//在D盘创建文件目录file
File f1 = new File("D:\\file");
System.out.println(f1.exists());//判断是否存在的
//可以创建多重目录
File f2 = new File("D:\\file\\11");
if(!f1.exists()){
f1.mkdir();//以目录的形式创建
}
if (!f2.exists()){
f2.mkdirs();
}
File f3 = new File("D:\\Note\\tde.txt");
String parentPath = f3.getParent();
System.out.println(parentPath);//D:\Note
File parentFile = f3.getParentFile();
System.out.println("获取绝对路径" + parentFile.getAbsolutePath());//获取绝对路径D:\Note
File f4 = new File("myfile");//在当前项目里创建文件
System.out.println("绝对路径"+ f4.getAbsolutePath());//绝对路径D:\Learn\LearnDemoProject\Java\myfile
}
}
package File;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileTest02 {
public static void main(String[] args) {
File myFile = new File("myFile");
System.out.println(myFile.getName()); //获取文件名
System.out.println(myFile.isDirectory()); //判断是不是一个目录
System.out.println(myFile.isFile()); //判断是不是一个文件
System.out.println(myFile.lastModified()); //获取文件最后一次修改的时间
//将毫秒转换为日期
Date time = new Date(myFile.lastModified());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String strtime = sdf.format(time);
System.out.println(strtime);
//获取文件大小的
System.out.println(myFile.length());
}
}
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
package File;
import java.io.File;
public class FileTest03 {
public static void main(String[] args) {
//File[] listFile()
//获取当前目录下的所有子文件
File f = new File("D:\\");
File[] files = f.listFiles();
for (File file:files){
System.out.println(file.getAbsoluteFile());//所有子文件
}
}
}
拷贝整个目录下的文件
package File;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileTest04 {
public static void main(String[] args) {
//拷贝源和拷贝目标
//调用方法拷贝
File f1 = null;
File f2 = null;
f1 = new File("D:\\Note");
f2 = new File("D:\\java");
CopyDir(f1,f2);
}
/**
* 拷贝目录
* @param src
* @param dest
*/
private static void CopyDir(File src, File dest) {
if (src.isFile()){
//src是一个文件的话,递归结束
//是文件的时候需要拷贝
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(src);
byte[] bytes = new byte[1024*1024];
String path = dest.getAbsolutePath().endsWith("\\")?dest.getAbsolutePath(): dest.getAbsolutePath() + "\\" + src.getAbsolutePath().substring(3);
fileOutputStream = new FileOutputStream(path);
int readCount = 0;
while((readCount = fileInputStream.read(bytes))!= -1){
fileOutputStream.write(bytes,0,readCount);
}
fileOutputStream.flush();
} catch (Exception e) {
e.printStackTrace();
}finally {
if (fileInputStream != null){
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileOutputStream != null){
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return;
}
File[] files = src.listFiles(); //获取源下面的子目录
for (File file: files){
System.out.println(file.getAbsolutePath());//获取所有文件的绝对路径
//可能是文件、可能是目录
if (file.isDirectory()){
String srcDir = file.getAbsolutePath();//获取源目录的绝对路径
System.out.println(srcDir);
//endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False
String destDir = dest.getAbsolutePath().endsWith("\\")?dest.getAbsolutePath(): dest.getAbsolutePath() + "\\" + srcDir.substring(3);
System.out.println(destDir);
File newFile = new File(destDir);
if (!newFile.exists()){
newFile.mkdirs();
}
}
CopyDir(file,dest);
}
}
}