笔记-java之File类、IO流


活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…

File类

File类的对象代表操作系统的文件(文件、文件夹),File类在java.io.File包下
File类提供了诸如:创建文件对象代表文件,获取文件信息(大小,修改时间)、删除文件、创建文件(文件夹)等功能。

IO流:用来读取文件数据的。

File类创建对象:
在这里插入图片描述

File对象可以定位文件和文件夹。
File封装的对象仅仅是一个文件名,这个路径可以是存在的,也可以是不存在的。

File类构建对象的方式:
File file = new File(“文件/文件夹/绝对路径/相对路径”);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
delete方法默认只能删除文件和空文件夹,默认不能删除非空文件夹,delete方法直接删除不走回收站。

在这里插入图片描述
listFiles方法注意事项:

1.当文件不存在时或代表文件时,返回null。
2.当文件对象代表一个空文件夹时,返回一个长度为0的数组。
3.当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回。
4.当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放回File数组中返回,包括隐藏文件。
5.当没有权限访问该文件夹时,返回null。
6.只能遍历当前文件夹对象下的一级文件对象。

方法递归
方法调用自身的形式称为方法递归。

递归的形式
直接递归:方法自己调用自己
间接递归:方法调用其他方法,其他方法又回调方法自己。

方法递归存在的问题:
递归如果没有控制好终止,会出现递归死循环,方法无限调用自己,无法终止,最终导致栈内存溢出现象。

public class test{
	public static void main(String[] args){
		int result = f(10);
		System.out.println("10的阶乘是:" + result);//3628800
	}
	public static int f(int n){
		if (n == 1){
			return 1;
		}else{
			return n * f(n-1);
		}
	}
}

递归算法三要素大体可以总结为:

递归的公式:f(n) = f(n-1) * n;
递归的终结点:f(1)
递归的方向必须走向终结点。

ASCLL字符集

ASCLL:美国信息交换标准代码,包括数字、英文、符号。
ASCLL使用1个字节存储一个字符,一个字节是8位,总共可以表示128个字符信息,对于表示英文、数字来说是够用。

GBK
GBK是中国的码表,包含了几万个汉字等字符,同时也要兼容ASCLL编码,GBK编码中一个中文字符一般以两个字节的形式存储。

Unicode字符集
统一码,也叫万国码。是计算机领域里的一项行业标准。
UTF-8是Unicode的一种常见的编码方式。

UTF-8编码后一个中文一般以三个字节的形式存储,同时也要兼容ASCLL编码表。
技术人员都应该使用UTF-8的字符集编码。

汉字存储和展示过程解析:
汉字–>查询Unicode码表–>码表中对应的数字–>编码->UTF-8–>转换二进制–>存储计算机

读取二进制–>存储计算机–>解码–>UTF-8–>码表对应的数字–>查询–>Unicode码表–>展示–>汉字
注意:英文和数字在任何国家的编码中都不会乱码。

英文和数字等在任何国家的字符集中都占字节
GBK字符中一个中文字符占2个字节
UTF-8编码中一个中文一般占3个字节
编码前的字符集和解码时的字符集必须一致,否则会出现字符乱码,英文和数字不会乱码。

在这里插入图片描述

IO流

I表示input,把硬盘文件中的数据读入到内存的过程,称之输入,负责读。
O表示output,把内存中的数据写出到硬盘文件的过程,称之输出,负责写。

IO分类:
按流的方向分:输入流、输出流
按流中的数据最小单位分:字节流(操作所有类型的文件),字符流(只能操作纯文本文件)。
在这里插入图片描述
字节输入流:读取文件的全部字节。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字节流适合做一切文件数据的拷贝。

IO流资源释放的方式:
try-with-resource
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值