1.文件类

一.File类介绍和文件分隔符

  1. File类是IO包中唯一表示:磁盘文件和磁盘目录的对象的路径.
    该类包含了创建,删除文件,重命名文件,判断文件读写权限以及文件是否存在,查询等功能方法.

  2. 只能设置和获取文件本身的信息,不能设置和获取文件的内容.

  3. Java开发:一次编译,到处运行,

    1. Unix:严格区分大小写
    2. Windows:默认情况下是不区分大小写的
  4. 路径分隔符,属性分隔符:

    1. Unix: 使用/,名称分隔符 使用:路径分隔符
    2. Windows: 使用\,名称分隔符, 使用;路径分隔符
    3. Java: 中一个\表示转译,在Windows平台的Java代码中表示一个路径,就得使用两个\\,但是Windows支持/

新建类FileDemo

public class FileDemo {
	public static void main(String[] args) {
		//获取属性分割符
		String pathSeparator = File.pathSeparator;
		char pathSeparatorChar = File.pathSeparatorChar;
		System.out.println(pathSeparator + "--------" + pathSeparatorChar);
		//路径分隔符
		String separator = File.separator;
		char separatorChar = File.separatorChar;
		System.out.println(separator + "--------" + separatorChar);
		
		//方式一
		String path = "D:\\huangkun\\Holle.java";
		//方式二
		String path1 = "D:/haungkun/Holle.java";
		//方式三
		String path2 = "D:" + File.separator + "huangkunkun" + File.separator + "Hello.java";
	}
}

二.获取路径和检查状态

构造器

File(File parent, String child)  根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)  通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)  根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri)  通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

新建类FileDemo1

public class FileDemo1 {
	public static void main(String[] args) {
		//test1();
		//test2();
		test3();
	}
	/*
	 * boolean canExecute()  判断是否可执行文件
	 * boolean canRead()		判断该文件是否可读
	 * boolean canWrite()		判断该文件是否可写
	 * boolean isHidden()		判断该文件是否为隐藏文件
	 * long lastModified()		判断该文件的最后修改时间
	 * long length()				获取该文件的长度大小(单位字节)
	 * */
	private static void test3() {
		File f = new File("D:/huangkun/hello.java");		
		System.out.println(f.canExecute());		
		System.out.println(f.canRead());
		System.out.println(f.canWrite());		
		System.out.println(f.isHidden());		
		System.out.println(new Date(f.lastModified()).toLocaleString());
		System.out.println(f.length());
		
	}
	/*	检测File状态的方法:	
	    File getAbsoluteFile()   获取当前文件绝对路径  路径名形式,
		String getAbsolutePath() 获取当前文件绝对路径 字符串形式
		String getName()   获取当前文件名
		String getParent()   获取父目录路径名名字符串
		File getParentFile()  获取父目录的抽象路径名
		String getPath() 获取路径名字字符串
		*/
	private static void test2() {
		File f = new File("D:/haungkun/hello.java");
		System.out.println(f.getAbsoluteFile());
		System.out.println(f.getAbsolutePath());
		System.out.println(f.getName());
		System.out.println(f.getPath());
		System.out.println(f.getParentFile());
		System.out.println(f.getParent());
	}

	//创建文件
	private static void test1() {
		//方式一
		File f = new File("D:/huangkun/hello.java");
		//方式二
		String s = "D:/huangkun";
		File f1 = new File(s,"hello.java");
		//方式三
		File path = new File("D:/huangkun");
		File f2 = new File(path,"hello.java");
		System.out.println(f);
		System.out.println(f1);
		System.out.println(f2);
	}
}

三.IO-文件操作

修改FileDemo

public class FileDemo1 {
	public static void main(String[] args) {
		//test1();
		//test2();
		//test3();
		try {
			test4();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/*
	 * File类中方法-文件操作
	 * boolean isFile()	 是否有文件
	 * boolean createNewFile()	创建新的文件
	 * static File createTempFile(String prefix,String suffix)  创建临时文件
	 * boolean delete()		删除文件
	 * void deleteOnExit()		在JVM停止时删除文件
	 * boolean exists()		判断文件是否存在
	 * boolean renameTo(File dest)	重新修改名称
	 * */
	private static void test4() throws IOException {
		String dir = "D:/huangkun/";
		File f4 = new File("D:/huangkun/hello.java");
		String dest = "huangkun.txt";
		System.out.println(f4.delete());
		//f4.deleteOnExit();
		System.out.println(f4.isFile());
		if (!f4.exists()) {
			System.out.println("创建文件:" + f4.createNewFile());
		} else {
			System.out.println("重命名文件:" + f4.renameTo(new File(dir, dest)));
		}
		System.out.println(f4.createTempFile("huangkun", ".tem"));
	}
...
}

四.IO-目录操作

/*
	 * File类中方法-操作目录
	 * boolean isDirectory()	判断是否是目录
	 * boolean mkdir()		创建当前目录
	 * boolean mkdirs()	创建包括所有必需但不存在的父目录
	 * boolean list()		列出所有文件名
	 * File[] listFiles()		列出所有文件对象
	 * static File[] listRoots()	列出系统盘符
	 * boolean exists() 判断文件是否存在
	 */
	private static void test5() {
		File dir = new File("D:/huangkun/123");
		File file= new File("D:/huangkun/hello.java");
		if (!dir.isDirectory()) {
			dir.mkdir();
		}else {
			dir.mkdirs();
		}
		System.out.println("\n---------String[] list()-------------");
		String[] s = dir.list();
		for (String string : s) {
			System.out.println(string);
		}
		System.out.println("\n---------File[] listFiles()-------------");
		File[] s1 = dir.listFiles();
		for (File string : s1) {
			System.out.println(string);
		}
		System.out.println("\n---------File[] listRoots()-------------");
		File[] s2 = dir.listRoots();
		for (File string : s2) {
			System.out.println(string);
		}
		
	}

五.列出目录中所有文件

//递归操作列出所有文件的目录
public class FileDemo2 {

	public static void main(String[] args) {
		File file = new File("E:/BaiduNetdiskDownload");
		listAllFile(file);
		
	}
	public static void listAllFile(File file){
		System.out.println(file.getAbsoluteFile());
		//File listFiles()	返回文件的目录和文件
		 File[] f = file.listFiles();
		for (File f1 : f) {
			//判断是否为文件夹
			if (f1.isDirectory()) {
				//递归
				listAllFile(f1);
			}
			//打印文件名
			System.out.println(f1.getAbsoluteFile());
		}
	}
}

image

六.列出文件的分层机构

新建类File4Demo

//目录的分层结构
public class File4Demo {

	public static void main(String[] args) {
		File file = new File("E:/JavaSE/第十七章IO操作/文件类/File4Demo.java");
		//创建一个list存放父文件夹
		List<String> listParent = new ArrayList<>();
		//调用方法
		fileAllPath(listParent, file);
		//调用Collection.reverse取反
		Collections.reverse(listParent);
		System.out.println(listParent);
		//创建存储字符串拼接想要的格式
		StringBuilder sb = new StringBuilder(40);
		//foreach遍历listParent
		for (String list : listParent) {
			sb.append(list + ">");
		}
		//删掉最后一个">"
		sb.deleteCharAt(sb.length() - 1);
		System.out.println(sb);
	}

	//把父文件夹都递归出来
	private static void fileAllPath(List<String> list, File file) {
		//判断当前文件夹的符文夹,不为null和空字符串,则添加到list里边
		if (file.getParentFile() != null && !"".equals(file.getParentFile().getName())) {
			list.add(file.getParentFile().getName());
		}
		//递归
		if (file.getParentFile() != null) {
			fileAllPath(list, file.getParentFile());
		}
	}
}

七.批量改名

新建类Demo5

//批量修改文件名
public class FileDemo5 {
	public static void main(String[] args) {
		File file = new File("D:/Java");
		//要替换的文字
		String s = "1";
		//获取文件列表
		File[] files = file.listFiles();
		//遍历文件
		for (int i = 0; i < files.length; i++) {
			System.out.println(files[i].getName());
			//如果文件名有 字符串 s
			if (files[i].getName().contains(s)) {
				//获得新文件名
				String newName = files[i].getName().replace(s, "");
				files[i].renameTo(new File(file,newName));
				
			}
		}
	}
}

八.文件过滤器(filenamefilter)

新建类FileNameFilter
//文件过滤器
public class FileNameFilterDemo {
	public static void main(String[] args) {
		//新建目录
		File dir = new File("E:/JavaSE/第十七章IO操作/文件类");
		//新建File数组存放筛选的文件
		//匿名内部类,
		File[] fs = dir.listFiles(new FilenameFilter() {
			//实现accept方法
			public boolean accept(File dir, String name) {
				//满足条件返回true
				return new File(dir,name).isFile() && name.endsWith(".java");
			}			
		});
		//遍历数组
		for (File file : fs) {
			System.out.println(file.getName());
		}
	}	
}
发布了82 篇原创文章 · 获赞 0 · 访问量 1328

猜你喜欢

转载自blog.csdn.net/huang_kuh/article/details/105292809
1.
今日推荐