栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java-IO流】Input/Output Stream、输入/输出流、File、分隔符、大小写、常用方法、练习:搜索、删除、剪切、读取整个F盘的文件及文件夹

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java-IO流】Input/Output Stream、输入/输出流、File、分隔符、大小写、常用方法、练习:搜索、删除、剪切、读取整个F盘的文件及文件夹

八、IO

文章目录

八、IO

01_简介02_File

分隔符、大小写常用方法练习:搜索、删除、剪切

01_简介

I/O流 全称是 Input/Output Stream,译为“输入/输出流”。

不管什么数据,本质上都是二进制而已,所谓 I/O流,就是将这些 01 二进制进行传输

I/O流的常用类型都在 java.io 包中:

类型输入流输出流
字节流(Byte Streams)InputStreamOutputStream
字符流(Character Streams)ReaderWriter
缓冲流(Buffered Streams)BufferedInputStream、BufferedReaderBufferedOutputStream、BufferedWriter
数据流(Data Streams)DataInputStreamDataOutputStream
对象流(Object Streams)ObjectInputStreamObjectOutputStream
02_File 分隔符、大小写

一个 File 对象就代表一个文件或目录(文件夹)

// file1、file2都能访问test.txt文件
File file1 = new File("F:\Files\Texts\test.text");
File file2 = new File("F:/Files/Texts/test.text");

名字分隔符(name separator):File.separator

在 UNIX、Linux、Mac 系统中:正斜杠 /在 Windows 系统中:反斜杠

路径分隔符(path separator):File.pathSeparator

在 UNIX、Linux、Mac 系统中:冒号:在 Windows 系统中:分号;

是否区分大小写

在 Windows、Mac 系统中:文件名、目录名不区分大小写在 UNIX、Linux 系统中:文件名、目录名区分大小写 常用方法

String getName() //获取文件或目录的名称
String getParent() //获取父路径
File getParentFile() //获取父文件
String getPath() //获取路径
String getAbsolutePath() //获取绝对路径
File getAbsoluteFile() //获取绝对路径形式的文件
long lastModified() //最后一次修改的时间
long lenght() //文件的大小(不支持目录)

获取文件或目录的名称:String getName()获取父路径:String getParent()获取父文件:File getParentFile()获取路径:String getPath()获取绝对路径:String getAbsolutePath()获取绝对路径形式的文件:File getAbsoluteFile()最后一次修改的时间:long lastModified()文件的大小(不支持目录):long length()

boolean isAbsolute()
boolean exists()
boolean isDirectory()
boolean isFile()
boolean isHidden()
boolean canRead()
boolean canWrite()

是否绝对路径:boolean isAbsolute()文件或目录是否存在:boolean exists()是否目录(文件夹):boolean isDirectory()是否文件:boolean isFile()是否隐藏:boolean isHidden()是否可读:boolean canRead()是否可写:boolean canwrite()

String[] list() //获取当前目录下所有文件、目录的名称
String[] list(FilenameFilter filter) 
File[] listFiles() //获取当前目录下所有文件、目录
File[] listFiles(FilenameFilter filter) 
File[] listFiles(FileFilter filter) 

获取当前目录下所有文件、目录的名称
String[] list()
String[] list(FilenameFilter filter)获取当前目录下所有文件、目录
File[] listFiles()
File[] listFiles(FilenameFilter filter)
File[] listFiles(FileFilter filter)

boolean createNewFile() //创建文件(不会覆盖旧文件)
boolean delete() //删除文件或空目录(不经过回收站)
boolean mkdir() //创建当前目录
boolean mkdirs() //创建当前目录(包括不存在的父目录)
boolean renameTo(File dest) //剪切到新路径

创建文件(不会覆盖旧文件):boolean createNewFile()删除文件或空目录(不经过回收站,慎重!):boolean delete()创建当前目录:boolean mkdir()创建当前目录(包括不存在的父目录):boolean mkdirs()剪切到新路径(可以改名,很有用):boolean renameTo(File dest)

boolean setLastModified(long time)
boolean setReadOnly()
boolean setWritable(boolean writable, boolean ownerOnly)
boolean setWritable(boolean writable)
boolean setReadable(boolean readable, boolean ownerOnly)
boolean setReadable(boolean readable) 	

设置修改日期:boolean setLastModified(long time)设置只读权限:boolean setReadonly()设置写权限:
boolean setWritable(boolean writable, boolean ownerOnly)
boolean setWritable(boolean writable)设置写权限:
boolean setReadable(boolean readable, boolean ownerOnly)
boolean setReadable(boolean readable) 练习:搜索、删除、剪切

import java.io.File;
import java.util.function.Consumer;

public class Files {
	
	public static void search(File dir, Consumer operation){
		if(dir == null || operation == null) return;
		// 目录不存在 或者 传入的是文件, 不执行操作
		if(!dir.exists() || dir.isFile()) return; 
		File[] subfiles = dir.listFiles();
		for (File sf : subfiles) {
			operation.accept(sf);
			if(sf.isFile()) continue; // 如果是文件,跳过,进行后面的搜索
			search(sf, operation); // 如果是文件夹, 递归搜索该文件夹
		}
	}
	
	public static void delete(File file){
		// 传入null 或者  文件夹不存在, 不执行操作
		if(file == null || !file.exists()) return;
		clean(file);
		file.delete();
	}
	
	public static void clean(File dir){
		// 如果文件夹不存在 或者 传入的是文件, 不执行操作
		if(dir == null || !dir.exists() || dir.isFile()) return;
		File[] subfiles = dir.listFiles();
		for (File sf : subfiles) {
			delete(sf);
		}
	}
	
	public static void move(File src, File dest){
		if(src == null || dest == null) return;
		// 如果源File不存在 或者 目标File 已经存在, 不执行操作
		if(!src.exists() || dest.exists()) return;
		mkparents(dest);
		src.renameTo(dest);
	}
	
	private static void mkparents(File file){
		File parent = file.getParentFile();
		if(parent == null) return;
		parent.mkdirs();
	}	
}
import java.io.File;
import java.util.function.Consumer;

public class Main {
	public static void main(String[] args) throws Exception {
		// file1、file2都能访问test.txt文件
		// File file1 = new File("F:\");
		File file = new File("F:/");
		Files.search(file, (sub) -> {
			if (sub.isFile()) { // 是文件
				System.out.println("t文件:" + sub.getName());
			} else {
				System.out.println("目录:" + sub.getName());
			}
		});
	}
}

这个测试类可以像下面这样读取整个F盘的文件及文件夹:

【读取文件夹】待上传

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号