IO总结之File文件总结(一)
程序员文章站
2022-05-27 14:48:58
...
目录
- pathSeparator和separator分隔符的使用
- 按照相对路径和绝对路径构建File
- 常用方法的使用
- list(),listFiles(),FilenameFilter过滤器
- 递归打印文件目录
pathSeparator,separator分隔符的使用
尽量使用用 / 分隔路径
import java.io.File;
/**
测试两个常用的常量
1.路径分割符
2.名称分隔符 \ (windows) /(linux)
*/
public class TestSeparator {
public static void main(String[] args) {
System.out.println(File.pathSeparator); //路径分隔符
System.out.println(File.separator); //分隔符
//路径的三种表示方法
String path = "D:\\github\\ACM";
String path2 = "D:" + File.separator + "github" + File.separator + "ACM";
String path3 = "D:/github/ACM/";
File f = new File(path,".gitattributes");
File f2 = new File(path2,".gitattributes");
File f3 = new File(path3,".gitattributes");
System.out.println(f.getAbsolutePath());
System.out.println(f2.getAbsolutePath());
System.out.println(f3.getAbsolutePath());
}
}
效果
按照相对路径和绝对路径构建File
import java.io.File;
/**
* 测试相对路径和绝对路径 构造File对象
* 1. 父路径构建 (相对路径的构建)
* 2. 直接构建(绝对路径的构建)
* user.dir (在自己的工作空间)
*/
public class AbsoluteRelativeTest {
public static void main(String[] args) {
String parentPath = "/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file";
String name = "in.txt";
//相对路径的构建 按照父路径
// File f = new File(parentPath,name);
File f = new File(new File(parentPath),name); //这种方式等同于上面的
System.out.println(f.getAbsolutePath());
System.out.println(f.getName());
//绝对路径的直接构建
File f3 = new File("/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file/out.txt");
System.out.println(f3.getAbsolutePath());
System.out.println(f3.getName());
//直接在当前目录下的相对路径的构造 : user.dir (在自己的工作空间输出)
File f4 = new File("test.txt");
System.out.println(f4.getPath()); //相对路径 如果是相对路径就输出相对路径
System.out.println(f4.getAbsolutePath()); //绝对路径
System.out.println(f4.getName());
}
}
常用方法的使用
- 文件判断
- 目录判断
- 创建文件
- 创建目录
- 创建临时文件以及相关方法的使用
import java.io.File;
import java.io.IOException;
public class FunctionTest {
public static void main(String[] args) throws IOException, InterruptedException {
test1();
test2();
}
/**
* 相关方法
* 2.isFile() isDirectory() createNewFile() delete()使用
* 3.分清楚mkdir 和 mkdirs的区别
*/
public static void test1() throws IOException {
String path = "/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file/";
File f = new File(path + "in.txt");
if (f.isFile()) System.out.println("f is a file! ");
else System.out.println("f is not a file !");
File f2 = new File(path);// 代表目录
if (f2.isDirectory()) System.out.println("f2 is a directory!");
else System.out.println("f2 is not a directory!");
File f4 = new File(f2, "test.java");// f2这个文件目录下面没有666.java
if(!f4.exists())f4.createNewFile(); // 在f2下面创建666.java
f4.delete(); // 创建出来就删除f4文件
//必须确保父目录存在
File f5 = new File(path+"d1");
f5.mkdir();// 如果前面的目录存在,就创建这个目录,否则就创建这个目录
//不必要确保父目录存在
File f6 = new File(path + "d2/d3/");
f6.mkdirs();// 不论前面的目录是否存在,都创建多个目录
}
/**
* 一些方法的使用
*/
public static void test2() throws IOException, InterruptedException {
String path = "/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file/";
File f = new File(path + "test.txt");
System.out.println(f.exists()); //是否存在
System.out.println(f.canWrite());
System.out.println(f.length()); //文件夹不能获取长度
System.out.println(f.getParent()); //存在就返回,不存在就返回null
//临时文件的创建
File temp = File.createTempFile("iii", ".temp", new File(path)); //前三个字节长,默认的后缀,以及目录
Thread.sleep(1000);//查看效果
temp.deleteOnExit(); //临时文件退出就删除
}
}
list(),listFiles(),FilenameFilter过滤器
相关知识点
- 列出相关的文件,文件夹
- 过滤掉相关的文件(accept方法)
- 注意list()方法是String类型,而listFile是File对象
import java.io.File;
import java.io.FilenameFilter;
/**
* 子目录,或者子文件名
* 以及文件过滤器的使用
* list() listFiles()
* File[] Filters
* new FilenameFilter() 按照名字过滤的类 有一个必须实现的accept()方法
*/
public class ListFileTest {
public static void main(String[] args) {
File f = new File("/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO/file");
if (f.isDirectory()) {
System.out.println("====子文件-文件名=====");
String[] subName = f.list(); //获取子文件的名字
for (String temp : subName) {
System.out.println(temp);
}
System.out.println("====子文件-文件目录=====");
File[] FNames = f.listFiles(); //获取子文件的目录
for (File temp : FNames) {
System.out.println(temp.getPath()); //获取每个文件的名字或者 绝对路径
}
//命令设计模式(过滤器)
System.out.println("====子文件-.java文件=====");
File[] Filters = f.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".java");//必须是文件且后缀是.java
}
}); //获取目录
for (File temp : Filters) {
System.out.println(temp.getAbsolutePath()); //获取每个文件的绝对路径
}
}
System.out.println("----------输出它的根目录---------");
File[] roots = f.listRoots();
for (File temp : roots) {
System.out.println(temp.getAbsolutePath());
}
}
}
递归打印文件目录
import java.io.File;
/**
* 递归打印文件目录和文件
*/
public class PrintFileTreeTest {
public static void printFile(File file, int level) {
for(int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getName());
if(file.isDirectory()) {
File[] files = file.listFiles();
for(File i:files) {
printFile(i, level+1);
}
}
}
public static void main(String[] args) {
File file = new File("/home/zxzxin/Java_Maven/Java8/src/main/java/JavaPrimary/IO");
printFile(file, 0);
}
}
效果
上一篇: 诺亚方舟实验室李航:深度学习还局限在复杂的模式识别上
下一篇: GKCTF2020——CRYPTO
推荐阅读