JAVA文件的基本操作-------------------------------------破晓

Java基本的文件操作

前言

本片博客并没有太多深入的东西,只是一些Java文件操作的小例子,方便刚接触文件的玩家快速上手。大家可以把这里面的所有代码都复制出去,自己运行试一试。

1.File类的基本用法

public static void main(String[] args) {
	File file = new File("D:\\临时学习\\机器视觉\\机器视觉实验报告模板.docx"); 
	//File初始化时需要一个文件的路径;
	System.out.println("file: " + file);
	//输出一下这个file对象看一下,不管这个路径正确与否他都会输出并且不会报异常
	File parentFile = file.getParentFile();
	//可以得到file对像的上一层路径
	System.out.println("parentFile: " + parentFile);
	//输出一下这个parentFile对象看一下
	System.out.println(file.exists());
	//File对象初始化时,不论填入的路径正确与否它都不会出异常,所以要用file.exists()这个方法来判定这个路径在你电脑里是否真的存在
	System.out.println("是否为目录:" +file.isDirectory());
	//判断这个file是否是一个目录
	System.out.println("是否为文件:" + file.isFile());
	//判断这个file是否是一个文件
}

注意:你的电脑上肯定不会有 “D:\临时学习\机器视觉\机器视觉实验报告模板.docx” 这个路径。运行时注意更改哦。

运行结果:
在这里插入图片描述

2.File类的升级用法

通过上面了解我们知道了怎么判断一个file对象是否是一个目录,或者是一个文件,那么问题来了
如果是一个文件,如何知道这个文件有多少字节(即文件的大小)
如果是一个目录,如何得知其子目录

2.1得知一个文件的大小(单位:字节)

public static void main(String[] args) {
	File file = new File("D:\\临时学习\\机器视觉\\机器视觉实验报告模板.docx");
	System.out.println("文件的大小:" + file.length() + "字节");
	//这个比较容易我就不做输出演示了
}

2.2得知一个目录的子目录或者子文件

public static void main(String[] args) {
	File file = new File("D:\\临时学习\\机器视觉");
	File[] Childfiles = file.listFiles();//得到该目录的下一级列表
	for (File oneFile : Childfiles) {
		System.out.println(oneFile);
	}
}

运行结果:
在这里插入图片描述

2.3得知一个磁盘的总空间和剩余空间

public static void main(String[] args) {
		File file = new File("D:");
		System.out.println("D盘的总空间为:" + file.getTotalSpace());
		System.out.println("D盘的剩余空间为:" + file.getFreeSpace());
}

3.文件的读写

//这是一个很基础的文件读写,将一个文件的所有内容读出来再写到另一个路径下
public static void main(String[] args) {
		File file = new File("D:\\临时学习\\机器视觉\\第四次实验\\第四次机器视觉实验.docx");
		try {
			FileInputStream fis = new FileInputStream(file);
			//初始化文件输入流,用于文件的读
			FileOutputStream fos = new FileOutputStream("D:\\临时学习\\123.docx");
			//初始化文件输出流,用于文件的写,这块有个要注意地方,如果该目录下没有这个文件,会帮你创建,但是不会创建目录,如果有的话会把原来的文件清空,所以这块要注意
			byte[] readbytes = new byte[(int) file.length()];
			//使用即将要读的文件的大小来初始化一缓冲区来放置读出来的内容 	
			fis.read(readbytes);//将读出来内容放置在readbytes中
			fos.write(readbytes);
			//将readbytes中的内容写入对应的文件中
			fis.close();
			fos.close();
			//文件是系统宝贵的资源,用完后要进行关闭
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
}		

文件的读写还有一种用法,如下图所示
在这里插入图片描述
这种用法有一个,首先我先解释一下这三个参数
1.第一个参数 byte[] b
b是一个缓冲区,读的内容会放在这里,写的内容也是从这里取
2.第二个参数 int off
off的意思是偏移量,这个偏移量不是文件流中的偏移量
比如 fis.read(b, 5, 14);
很多刚接触文件的同学会把这行代码理解成把文件中从第5个字节开始的14个字节读出来放入到缓冲区b中。这是错误的
这里的偏移量是指缓冲区中的偏移量
所以 fis.read(b, 5, 14);这行代码的正确理解为
从文件中读14个字节,把它放入到缓冲区b下标为5的地方,也就是说读出的字节放在以b数组的b[5]~b[18]的空间里,下标5到13,刚好可以放14个字节。
3.第三个参数 int len
len代表你要读的字节的数量,通俗一点就是你要从文件中读多少个字节

4.RandomAccessFile类

如果真的想把文件从第off个字节开始的len个字节读出来怎么办
还是上面的例子 fis.read(b, 5, 14);
如果我想实现这个**把文件中从第5个字节开始的14个字节读出来放入到缓冲区b中。**就得使用RandomAccessFile类

public static void main(String[] args) {
		File src = new File("D:\\临时学习\\机器视觉\\第四次实验\\第四次机器视觉实验.docx");
		File target = new File("D:\\临时学习\\123.docx");
		try {
			RandomAccessFile srcRaf = new RandomAccessFile(src, "rw");
			//这里的rw意思以读写的方式打开,还有一种常用的方式r,意思是读的方式
			RandomAccessFile targetRaf = new RandomAccessFile(target, "rw");
			byte[] result = new byte[14];
			srcRaf.seek(5);
			//将文件指针指向第五个字节
		    srcRaf.read(result);
		    //从第五个字节开始读14个字节
		    
		    targetRaf.seek(5);
		    //将文件指针指向第五个字节
			targetRaf.write(result);
			//从第五个字节开始读写个字节
			
			srcRaf.close();
			targetRaf.close();
			//RandomAccessFile对象使用完之后也需要关闭
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
}

5.创建目录

创建目录有两个方法mkdir()或mkdirs(),返回值都为tboolean类型,true代表创建成功,false代表创建失败。如果你要创建的目录已经存在就会返回false

		File file = new File("D:\\临时学习\\机器视觉\\机器视觉实验报告模板\\我要创建的新文件");
		//"我要创建的新文件" 这个是我要创建的新目录的名字
		File parentFile = file.getParentFile();
		//得到file对像的上一层路径即D:\\临时学习\\机器视觉\\机器视觉实验报告模板
		parentFile.mkdir();//用上一级的路径进行创建

mkdir()和mkdirs()用法基本一样,区别在于:
假设你要创建的新目录为D:\src\com\mec\new"
1.如果你的电脑里不存在D:\src\com\mec,当你使用mkdir()时会失败,new这个目录并不会创建出来,
2.如果使用mkdirs()的话,如果你的电脑里不存在D:\src\com\mec会先帮你创建,然后在创建new目录

6.总结

我本人也不是什么大佬,上面说到的内容并不是所有的Java文件操作,只是我用到过的,本文章原创,如有什么内容的错误或者内容补充,请反映公众号
在这里插入图片描述
编程学习讨论群:534150958(新建的,可能人有些少)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值