版权声明:以上所有博客均为冷漠的小猿所有,引用请注明出处 https://blog.csdn.net/lyf1997115/article/details/81675881
File
一 、File类是java中的文件操作类,其内部定义了多个构造方法,来接收不同的参数:
File(File parent, String child)
根据父路径和 child 路径名字符串创建一个新 File 实例。File(String pathname) //最为常用
通过将给定路径名字符串创建一个 File 实例。- File(String parent, String child)
根据父路径名字符串和 child 路径名字符串创建一个新 File 实例。 - File(URI uri)
通过将给定的 file: URI 转换为路径名来创建一个新的 File 实例。
例如:
String path = "C:\\Users\\Administrator\\Desktop\\Java";
File file = new File(path) ; // 通过将给定路径名字符串创建一个 File 实例。
File file2 = new File(file, "aaa.txt") ; //根据父路径和 child 路径名字符串创建一个新 File 实例。
二、File类中定义了许多对文件和目录的操作方法,比较常用的有:
1. public boolean exists() : 判断指定目录是否存在,存在返回true
2. public boolean isDirectory() : 判断给定目录是否为文件夹(目录)
3. public long length() :返回指定目录的大小
4. public boolean createNewFile() throws IOException : 根据给定的目录新建文件
5. public boolean delete() : 根据指定目录删除文件或目录(不能删除非空目录)
6. public void deleteOnExit() : 在程序结束时删除指定文件或目录
7. public String[] list() : 返回指定目录里的全部文件及目录名
8. public String[] list(FilenameFilter filter) : 返回符合指定规则的文件名及目录名
9. public File[] listFiles() : 返回指定目录里的所有文件及目录的File对象
10. public File[] listFiles(FilenameFilter filter) : 返回指定目录里符合规则的所有文件及目录的File对象
11. public boolean mkdir() : 根据指定目录创建单级目录
12. public boolean mkdirs() : 根据指定目录创建多级目录
13. public boolean renameTo(File dest) : 更改文件名或目录名(可用于剪切)
示例代码一:(文件操作)
public static void path() throws Exception {
File file = new File("d:") ;
File file2 = new File(file, "a.txt") ;
//创建
if (!file2.exists()) {
System.out.println("文件创建:" + file2.createNewFile()) ;
}else {
System.out.println("文件已存在");
}
//获取
System.out.println("获取绝对路径:" + file2.getAbsolutePath());
System.out.println("获取规范路径:" + file2.getCanonicalPath());
System.out.println("获取文件名:" + file2.getName());
System.out.println("获取父目录:" + file2.getParent());
System.out.println("获取路径名:" + file2.getPath());
System.out.println("是否是标准文件" + file2.isFile());
System.out.println("是否为隐藏文件:" + file2.isHidden());
System.out.println("文件长度:" + file2.length());
System.out.println("最后一次被修改的时间:" + new Date(file2.lastModified()));
//重属名(剪切) 并删除
File newFile = new File("d:\\b.txt") ;
System.out.println("重属名:" + file2.renameTo(newFile)) ;
File new2 = new File("d:\\迅雷下载\\c.txt");
System.out.println("剪切:" + newFile.renameTo(new2));
System.out.println("直接删除:" + new2.delete());
//退出jvm删除
file2.deleteOnExit();
}
示例代码二:(目录操作)
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String path = "d:\\aaa" ;
File f = new File(path) ;
//创建单级文件夹
if (!f.exists()) {
System.out.println("创建文件夹:" + f.mkdir()) ;
}else {
System.out.println("文件夹已存在");
}
//创建多级文件夹
File f2 = new File("d:\\aaa\\bbb\\ccc") ;
if (!f2.exists()) {
System.out.println("创建文件夹:" + f2.mkdirs()) ;
}else {
System.out.println("文件夹已存在");
}
//获取
System.out.println("绝对路径:" + f2.getAbsolutePath());
System.out.println("标准路径:" + f2.getCanonicalPath());
System.out.println("文件夹名:" + f2.getName());
System.out.println("字符串路径名:" + f2.getPath());
System.out.println("父目录:" + f2.getParent());
System.out.println("获取路径名:" + f2.getPath());
System.out.println("是否是标准文件" + f2.isFile());
System.out.println("是否为隐藏文件:" + f2.isHidden());
System.out.println("文件长度:" + f2.length());
System.out.println("最后一次被修改的时间:" + new Date(f2.lastModified()));
}
三、综合应用
实例一:递归输出给定目录里的所有文件,要求分级缩进
//递归遍历所有文件
public static void listFileTest(File file,int n) { //file指定目录,n当前级别
if (file != null) {
if (file.isDirectory()) {
System.out.println(print(n++) + file.getName());
File[] files = file.listFiles() ;
for (File file2 : files) {
listFileTest(file2,n);
}
}else {
System.out.println(print(n) + file.getName());
}
}
}
//分级缩进
public static String print(int n) {
StringBuffer s = new StringBuffer() ;
s.append("|_") ;
for(int i=0; i<n; i++) {
s.append("__") ;
}
return s.toString();
}
实例二:批量修改文件名
/**
* 批量修改文件名
* @param dest
*/
public static void renameToTest(File dest) { //传入需要操作的目录
File[] f = dest.listFiles() ; //返回目录里所有文件的File对象
for(int i=0 ;i < f.length; i++) {
String[] s2 = f[i].getName().split("[.]") ; //根据‘.’分割文件名与后缀名
//使用新的文件名与对应的后缀名连接形成新的文件路径
String newPath = dest.getPath() + File.separatorChar + i + "." + s2[s2.length - 1] ;
f[i].renameTo(new File(newPath)); //将文件名更改为新的文件名
}
}
实例三:递归删除非空目录
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("d:\\aaa") ;
deleteDirectory(file);
System.out.println("删除成功");
}
public static void deleteDirectory(File f) {
if (f.length() != 0) {
if (f.isDirectory()) {
for (File fi : f.listFiles()) {
deleteDirectory(fi);
}
}
}
f.delete() ;
}
实例四:文件的复制
File 类不提供文件的复制操作,要想实现需要用到IO操作,本章节暂不介绍 IO总结再给出代码