流的分类和file操作文件

Java知识点总结:想看的可以从这里进入

1、I/O简介


I/O流:Input output Stream,位于java.io包下,用于处理设备之间的数据传输。

一个流可以理解为一个数据的序列,分为输入和输出两种。输入流表示从一个源读取数据到程序,输出流表示程序向一个目标写数据。简单来说流就是对数据的读写

数据流的操作对象是File类,file类是java.io包中唯一代表磁盘文件本身,java是通过file来对磁盘文件进行操作的。

1.1、I/O的分类

  1. 根据流的方向

    输入流:数据源到程序,以InputStream、Reader结尾
    输出流:从程序到数据源,以OutPutStream,Writer结尾。
    

    输入和输出是针对程序划分的,而不是数据源,简单来说以程序为中心,往程序读取数据为输入,从程序写往文件为输出。

  2. 按操作数据单位不同

    字节流:主要以字节为单位处理数据,一般以Stream结尾
    字符流:主要以字符为单位处理数据,一般以Reader、Writer结尾
    
  3. 按流的角色的不同

    节点流:可以从一个特定的数据源读写数据
    处理流:(也叫包装流)不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能
    

1.2、I/O体系结构

I/O的类简单可以分为四类:
1、基于字节操作的I/O接口:InputStream和OutputStream
2、基于字符操作的I/O接口:Reader和Writer
3、基于磁盘操作的I/O接口:File
4、基于网络操作的I/O接口:Socket(不在java.io的包内,仅仅是放在一起讨论)
前两组主要是传输数据的格式,后两组是传输数据的方式。
image-20220225175527109

我们常用的java.lang.System是一个系统流:

  • System.in:标准输入流,默认设备是键盘。
  • System.out:标准输出流,默认设备是控制台。
  • System.err:标准错误流,默认设备是控制台。

2、File文件类


java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。它实现了Serializable, Comparable两大接口以便于其对象可序列化和比较。它是Java.io包中唯一代表磁盘文件本身的对象,如需访问文件本身的内容需要借助输入/输出流。

2.1、创建

路径中的每级目录之间用一个路径分隔符隔开(windows和DOS系统默认使用“\”来表示,UNIX和URL使用“/”来表示)。关于这个分割符的问题,File中有一个常量: public static final String separator ,可以根据不同的操作系统动态的提供分割符。

1File file = new File("文件路径");		//直接通过文件路径创建,路径为null时会抛出NullPointerException
2File file = new File(String parent, String child);  //从父路径名字符串和子路径名字符串创建一个新的File实例。
3File file = new File(File parent, String child);	   //从父抽象路径名和子路径名字符串创建一个新的File实例

2.2、提供的操作方法

File file = new File("路径");
操作文件:
	1、判断文件是否存在:file.exists();	返回布尔值
	2、创建新文件:file.createNewFile();	返回布尔值,如果不存在则创建一个空文件,需要try、catch捕捉
	3、删除文件:file.delete();	返回布尔值,如果该文件存在删除返回true,否则返回false
	4、获得文件最后修改时间:
    		Date date = new Date(file.lastModified());
        	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
       		simpleDateFormat.format(date);
    5、获得文件的大小:file.length();
    6、判断是否是一个文件:file.isFile();		返回布尔值
    7、判断是否为隐藏文件:file.isHidden();    返回布尔值
    8、获得文件名:file.getName();		返回String,带后缀的文件名
    9、判断两个对象是否为同一文件:file.equals(file2);	  返回布尔值
    10、判断文件是否可读:file.canRead();	返回布尔值
    11、判断文件是否可写:file.canWrite();   返回布尔值
    12、判断文件是否可执行:file.canExecute();	
    13、判断文件的后缀:file.getName().endsWith(".后缀");  返回布尔值
    14、获得文件的路径:
    		全路径:file.getAbsolutePath();	返回String,绝对路径,从盘开始
    		完整路径:file.getPath();	new对象时()内传递的路径
    		上级文件夹路径:file.getParent();	
    		获取上级文件夹:file.getParentFile();	返回file对象
操作文件夹
	1、创建一层文件夹:file.mkdir();		路径中最后一层文件夹,前提时前面几次文件夹都存在
	2、创建多层文件夹:file.mkdirs();	路径中没有的文件夹都会创建
	3、删除文件夹:file.delete();		路径中最后一层文件夹
	4、获取指定文件夹内的所有文件和文件夹: File[] files = file.listFiles();	只返回一层,返回file对象
	5、获取指定文件夹内的所有文件和文件夹的名:String[] files = filse.list();   返回字符串数组
	6、判断是否为文件夹:file.isDirectory();
	7、获得当前文件的父文件:file.getParentFile();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰 羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值