首页 / JAVA / java常用类库(十)——File
java常用类库(十)——File
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java常用类库(十)——File,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6056字,纯文字阅读大概需要9分钟。
内容图文
![java常用类库(十)——File](/upload/InfoBanner/zyjiaocheng/605/1321376a352043068706dcfef434e04c.jpg)
File
来源:java.io.File
文件类,主要是对文件,文件夹的操作。由于不同操作系统不同对应jvm不同,建议使用下面方式使用分隔符,保证跨平台没有问题。
包含常量:
类型 | 字段名 | 描述 | 对应win系统的符号 | 对应unix符号 |
---|---|---|---|---|
static Strig | separator | 名称分隔符 | \ | / |
static String | pathSeparator | 路径分隔符 | ; | : |
常用构造方法:
构造器 | 描述 | 备注 |
---|---|---|
File(File parent, String child) | 从父抽象路径和子路径名创建File实例 | 一般:在parent路径下创建child的文件 |
File(String pathname) | 给定字符串为路径创建File实例 | - |
File(String pathname, String child) | 从父路径字符串和子路径字符串创建新的File实例 | 一般:在pathname路径下创建child的文件 |
常用方法:
关于路径名中的名称分隔符:‘ // ’ (斜杆)or ’ \\ ’ (反斜杠)都可以(系统输出后者)。
区分正反斜杠:正斜杠可以表示除法
返回类型 | 方法名 | 描述 | 备注 |
---|---|---|---|
boolean | createNewFile() | 当且仅当文件不存在时创建空文件 | true:指定文件不存在且成功创建;false:指定文件存在或因操作系统权限不够(读写C盘)抛出异常;解决:用管理员启动IDE或更换盘符 |
boolean | deleteOnExit() | 虚拟机退出时删除文件/目录 | - |
boolean | delete() | 删除文件或文件夹 | 不会移到回收站,删除文件请谨慎 |
boolean | exists() | 测试对象的目录或文件是否存在 | - |
String | getAbsolutePath() | 得到绝对路径 | - |
String | getName() | 获取文件或目录名字 | - |
String | getPath() | 路径转换为字符串 | - |
boolean | isAbsolute() | 是否绝对路径 | - |
boolean | isDirectory() | 是否为目录 | - |
boolean | isFile() | 是否为文件 | - |
boolean | isHidden() | 该文件是否为隐藏文件 | - |
long | length() | 文件长度 | 单位:Byte |
String[ ] | list() | 返回字符串数组,内容为该对象下文件和目录 | 就在当前文件所在层的所有文件和文件夹,不跨层 |
File[ ] | listFiles() | 和上一个方法一样,返回类型为File数组 | - |
File[ ] | listFiles(FileFilter filter) | 返回经过过滤器过滤后的文件和目录 | 过滤器需要实现FileFilter的accept()方法1 |
boolean | mkdir() | 创建指定目录 | - |
boolean | mkdirs() | 创建指定目录 | mkdirs()和mkdir()区别2 |
boolean | renameTo(File dest) | 将文件更名并移到指定位置 | 类似剪切操作 |
关于File类的使用
自己测试方法代码:
(我把注释都去掉了,仅供阅读了解方法)
File f = new File("l://1.txt");
//创建新文件
boolean flag = f.createNewFile();
System.out.println(flag ? "success" : "failed");
System.out.println(f.getAbsolutePath());
//删除需谨慎
f.delete();
File f2= new File("l://hl");
f2.mkdir();
f2.delete();
File f3 = new File("l://hl/hh/hl");
f3.mkdirs();
File f4= new File(f3,"1.txt");
f4.createNewFile();
File f5 = new File("l:\\hl","1.txt");
f5.createNewFile();
//为空才可以删文件夹
f3.delete();
路径分隔符 ; ,推荐这个写法
System.out.println(File.pathSeparator);
//名称分隔符\
System.out.println(File.separator);
//rename
File f6 = new File("l:1.txt");
File f7 = new File("l:1.txt");
//将f6制定的文件移动到f7
f6.renameTo(f7);
关于File过滤器:
package com.hllg.javaBasic.io;
import java.io.File;
import java.io.FileFilter;
/**
* @author HLLG
* @version 1.0
* @create 01/02/2021 16:56
*/
public class FileFilterBasic {
public static void main(String[] args) {
//指定初始路径
File l = new File("l:\\");
listFiles(l);
}
/**
* 过滤器
*
* @param files
*/
public static void listFiles(File files) {
FileFilter fileFilter = new JpgFilter();
File[] file = files.listFiles(fileFilter);
//下面不做判断,抛出空指针异常
if (file != null && file.length > 0) {
for (File f : file) {
if (f.isDirectory()) {
listFiles(f);
} else {
System.out.println("找到了jpg," + f.getAbsolutePath());
}
}
}
}
/**
* 指定过滤规则,需要实现FileFilter接口
*/
static class JpgFilter implements FileFilter {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg") || pathname.isDirectory()) {
//返回true保留
return true;
}
//返回false过滤掉
return false;
}
}
}
上面可以进行优化,使用匿名对象:
package com.hllg.javaBasic.io;
import java.io.File;
import java.io.FileFilter;
/**
* @author HLLG
* @version 1.0
* @create 01/02/2021 16:56
*/
public class FileFilterAnonymousInsideClass {
public static void main(String[] args) {
//指定初始路径
File l = new File("l:\\");
listFiles(l);
}
/**
* 过滤器
*
* @param files
*/
public static void listFiles(File files) {
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg") || pathname.isDirectory()) {
//返回true保留
return true;
}
//返回false过滤掉
return false;
}
};
File[] file = files.listFiles(fileFilter);
//下面不做判断,抛出空指针异常
if (file != null && file.length > 0) {
for (File f : file) {
if (f.isDirectory()) {
listFiles(f);
} else {
System.out.println("找到了jpg," + f.getAbsolutePath());
}
}
}
}
}
在进行优化,这是常见的方式;
package com.hllg.javaBasic.io;
import java.io.File;
import java.io.FileFilter;
/**
* @author HLLG
* @version 1.0
* @create 01/02/2021 16:56
*/
public class FileFilterAnonymousInsideClassOptimize {
public static void main(String[] args) {
//指定初始路径
File l = new File("l:\\");
listFiles(l);
}
/**
* 过滤器
*
* @param files
*/
public static void listFiles(File files) {
File[] file = files.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg") || pathname.isDirectory()) {
//返回true保留
return true;
}
//返回false过滤掉
return false;
}
});
//下面不做判断,可能会抛出空指针异常
if (file != null && file.length > 0) {
for (File f : file) {
if (f.isDirectory()) {
listFiles(f);
} else {
System.out.println("找到了jpg," + f.getAbsolutePath());
}
}
}
}
}
遍历文件夹中指定类型文件:
package com.hllg.javaBasic.io;
import java.io.File;
/**
* @author HLLG
* @version 1.0
* @create 01/02/2021 16:56
*/
public class ForeachDirectory {
public static void main(String[] args) {
//指定初始路径
File f = new File("l:\\");
//获取所有文件存入数组
File[] files = f.listFiles();
listFiles(files);
}
/**
* 遍历文件夹
*
* @param files
*/
public static void listFiles(File[] files) {
//不为空且长度不为0
if (files != null && files.length > 0) {
for (File f : files) {
//判断是文件
if (f.isFile()) {
//指定搜索文件类型
if (f.getName().endsWith(".jpg")) {
//指定文件大小,单位字节,这里是2M
if (f.length() > 2 * 1024 * 1024) {
//打印文件路径
//这里可以加delete(),类似于删除垃圾文件,慎用
//f.delete();
System.out.println(f.getAbsolutePath());
}
}
} else {
//文件夹
File[] directory = f.listFiles();
listFiles(directory);
}
}
}
}
}
差不多就这些,下次见。
sue
2021-2-12 18:54:23
内容总结
以上是互联网集市为您收集整理的java常用类库(十)——File全部内容,希望文章能够帮你解决java常用类库(十)——File所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】