javaIO --- 文件操作

java.io.File类是IO包中唯一一个与文件本身操作(创建,删除,重命名)有关的类。
并且,File类只能操作文件本身,不能操作文件内容。

File类基本操作

继承至comparable,可以进行排序操作。
可以设置访问路径,对路径的配置主要通过构造方法处理:

  • public File(String pathname);设置操作的完整路径
  • public File(Fiile parent,String child)设置父路径与子目录

基本操作:

  • 创建新的文件:public boolean createNewFile() throws IOException
  • 判断文件是否存在:public boolean exists();
  • 删除文件:public boolean delete();
import java.io.File;

public class FileTest {

	public static void main(String[] args) throws Exception {
		File file=new File("F://course//file.txt");
		if(file.exists()) {
			file.delete();
		}else {
			System.out.println(file.createNewFile());
		}
	}

}

File类操作深入

不同系统有不同的分割符:windows:“\”,linux或unix:“/”
解决不同系统分割符的不同,File提供了常量:public static final String separator;

File file=new File("F://course"+File.separator+"file.txt");

但是现在不同分割符可以随意使用了。

File file=new File("F:/course/file.txt");

文件创建前提:文件的父路径首先存在。
获取父路径:public File getParentFile();
创建多级目录:public File mkdirs()

import java.io.File;

public class FileTest {

	public static void main(String[] args) throws Exception {
		File file=new File("F:/course/file.txt");
		if(!file.getParentFile().exists()) {
			file.getParentFile().mkdirs();
		}
		if(file.exists()) {
			file.delete();
		}else {
			System.out.println(file.createNewFile());
		}
	}

}

获取文件信息

  • 文件是否可读:public boolean canRead();
  • 文件是否可写:public boolean canWrite();
  • 文件是否可执行:public boolean canExecute()
  • 获取文件大小(字节长度):public long length();
  • 最后一次修改日期时间:public long lastModified();
  • 判断是否是目录:public boolean isDirectory();
  • 判断是否是文件:public boolean isFile();

如果是目录,需要列出目录中的全部内容:

  • 列出目录内容:public File[] listFiles();
import java.io.File;

public class FileTest {

	public static void main(String[] args) throws Exception {
		File file=new File("F:/course");
		System.out.println("是否是目录:"+ file.isDirectory());
		System.out.println("是否是文件:"+file.isFile());
		if(file.isDirectory()) {
			File result[]=file.listFiles();
			for(File obj:result) {
				System.out.println(obj);
			}
		}
	}
}

只涉及文件本身,不涉及文件内容处理。

案例:列出目录结构

import java.io.File;

public class FileTest {

	public static void main(String[] args) throws Exception {
		File file=new File("F:/course");
		System.out.println("是否是目录:"+ file.isDirectory());
		System.out.println("是否是文件:"+file.isFile());
		listDir(file);
	}
	public static void listDir(File file) {
		if(file.isDirectory()) {
			File result[]=file.listFiles();
			if(result!=null) {
				for(File obj:result) {
					listDir(obj);
				}
			}
		}
		System.out.println(file);
	}
}

如果目录为空,会报错,所以需要判断。

案例:文件批量更名

将此路径下的文件后缀名都改为“.png”。

import java.io.File;

public class FileTest {

	public static void main(String[] args) throws Exception {
		File file=new File("F:/photo");
		System.out.println("是否是目录:"+ file.isDirectory());
		System.out.println("是否是文件:"+file.isFile());
		listDir(file);
	}
	public static void listDir(File file) {
		if(file.isDirectory()) {
			File result[]=file.listFiles();
			if(result!=null) {
				for(File obj:result) {
					listDir(obj);
				}
			}
		}
		if(file.isFile()) {
			String newfile;
			if(file.getName().contains(".")) {
				newfile=file.getName().substring(0, file.getName().lastIndexOf("."))+".png";
			}else {
				newfile=file.getName()+".png";
			}
			System.out.println(newfile);
			//System.out.println(file.renameTo(file));//执行前做好心理准备
		}
	}
}

目录中文件的批量处理采用以上代码结构(递归)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值