IO流技术:开篇概述、File对象构建与相关方法的使用

本篇包含开篇知识储备,API使用规则、如何构建File对象、以及相关方法的使用。会通过Java编码分析。

API说明
pathSeparator 、separator路径 、路径分隔符
File(String parent,String child)、File(File parent,String child) 、File(String name)构造器、没有盘符以user.dir作为先对目录
getName()、getPath()、getAbsolutePath()、getParent()文件名、路径名
exists()、isFile()、isDirectory()判断状态
length()文件长度
createNewFile()、delete()创建新文件、删除文件

一、开篇

IO概述:

即输入输出流,流动的即是数据,以二进制的形式呈现,即字节流。人对字符更敏感,我们也可操作字符流。字符流底层还是字节流,自动搜索了我们的码表。

推荐组件:

CommonsIO

数据源:

就是存储数据的地方,例如网站、服务器、数据库。我们操作的是存储数据的文件。

其他:

Java对IO流进行了大量的封装,有很多对应的类和接口(进行了抽象)可直接使用。
核心的5个类和3个接口

序列化:

简单来说就是:对象存储在文件中的过程,而还原对象
又称之为反序列化。

IO流的方向:

输入流-程序-输出流

1、节点流:可以直接从数据源或目的地读写数据
2、包装流(处理流):对流进行封装,简化了操作,能提高性能。
包装流可以对其他流进行处理。

二、API使用规则以及如何构建File对象

1、File类代表的是一个抽象的表示形式。是将Java和文件建立起了一个联系。
2、查看API文档时,发现有的类没有构造器:
①静态工具类,例如 Math.不需要新建一个对象就可以使用
②静态方法去返回,例如Runtime

1、创建File对象的三种方法
代码
public class FileDemo1 {
	public static void main(String[] args){
		String path = "E:/Java/IO_Study01/src/ERT.jpg";
		//构建File 对象
		//方法1
		File src = new File(path); //丢一个名称
		System.out.println(src.length()); //打印图片大小(Kb)
		//方法2
		src = new File("E:/Java/IO_Study01/src","ERT.jpg"); //父子构建
		src = new File("E:/Java/IO_Study01","/src/ERT.jpg"); //能够拼出来就OK
		System.out.println(src.length()); 
		//方法3
		src = new File(new File("E:/Java/IO_Study01/src"),"ERT.jpg"); //父对象,子名称
		System.out.println(src.length());
	}
}
结果

在这里插入图片描述
在这里插入图片描述

2、相对路径与绝对路径

简单讲,区别在于有无盘符

代码
public class FileDemo2 {
	public static void main(String[] args){
		String path = "E:/Java/IO_Study01/src/ERT.jpg";
		//绝对路径
		File src = new File(path);
		System.out.println(src.getAbsolutePath());
		//相对路径:相对于工程路径
		System.out.println(System.getProperty("user.dir")); //打印工程路径
		src = new File("ERT.jpg");
		System.out.println(src.getAbsolutePath());
	}
}

注意:File可以构建一个文件,也可以构建一个不存在的路径

结果

在这里插入图片描述

3、名称分隔符用 separator
代码
public class PathDemo01 {
	public static void main(String[] args){
		String path = "E:\\Java\\IO_Study01\\src\\ERT.jpg";
		System.out.println(File.separatorChar);
		//1、建议用  /   不用转意,可以跨平台
		String path1 = "E:/Java/IO_Study01/src/ERT.jpg";
		//2、常量拼接,动态
		String path2 = "E:"+File.separatorChar+"Java"+File.separatorChar
		+"IO_Study01"+File.separatorChar+"src"+File.separatorChar+"ERT.jpg";
		System.out.println(path);
		System.out.println(path1);
		System.out.println(path2);
	}
}
结果

在这里插入图片描述

三、获取名称或路径

  • getName() 名称
  • getPath() 相对或绝对路径
  • getAbsolutePath() 绝对路径
  • getParent() 上一路径
代码
public class FileDemo3 {
	public static void main(String[] args){
		File src = new File("src/ERT.jpg");
		//基本信息
		System.out.println("名称:"+src.getName());
		System.out.println("路径:"+src.getPath());
		System.out.println("绝对路径:"+src.getAbsolutePath());
		System.out.println("父路径:"+src.getParent());
		System.out.println("父对象:"+src.getParentFile().getName());
	}
}
结果

在这里插入图片描述

四、文件状态

1、判断是否存在:exists()
2、若存在:

  • 文件判断:isFile()
  • 文件夹/目录判断:isDirectory()
代码
public class FileDemo4 {
   public static void main(String[] args){
   	File src = new File("src/ERT.jpg");
   	System.out.println("是否存在:"+src.exists());
   	System.out.println("是否是文件:"+src.isFile());
   	System.out.println("是否是文件夹:"+src.isDirectory());
   	System.out.println("------------");
   	
   	src = new File("aaa/ERT.jpg");
   	System.out.println("是否存在:"+src.exists());
   	System.out.println("是否是文件:"+src.isFile());
   	System.out.println("是否是文件夹:"+src.isDirectory());
   }
}
结果

在这里插入图片描述

五、其他信息

1、长度:length()
是字节数 (确保是文件)

代码
public class FileDemo5 {
	public static void main(String[] args){
		File src = new File("E:/Java/IO_Study01/src/ERT.jpg");
		System.out.println("长度:"+src.length());
		src = new File("E:/Java/IO_Study01");
		System.out.println("长度:"+src.length());
		src = new File("E:/Java");
		System.out.println("长度:"+src.length());
	}
}

注意:返回目录长度时,一般为0或者4096

结果

在这里插入图片描述
在这里插入图片描述

2、createNewFile() 和 delete() 的使用

代码
public class FileDemo6 {
	public static void main(String[] args) throws Exception{
		File src = new File("E:/Java/IO_Study01/src/test.txt");
		//创建空文件
		boolean flag = src.createNewFile();
		System.out.println("是否创建成功:"+flag);
		//删除已存在的文件
		flag = src.delete();
		System.out.println("是否删除成功:"+flag);
	}
}

注意:操作跟系统打交道,重复名(跟关键字相同)不能创建成功,比如;con com3 …

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值