File

File

  • FFile是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件或文件夹)。

注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据

创建对象

注意:

  • File对象既可以代表文件,也可以代表文件夹。
  • File封装的对象仅仅是一个路径名 

绝对路径、相对路径

  • 绝对路径:从盘符开始

File file1=new File("D:\\itheima\\a.txt");

  • 绝对路径:不带盘符,默认直接到当前工程下的目录寻找文件

File file2=new File("模块名\\a.txt"); 

常用方法

1、判断文件类型,获取文件信息

2、创建文件、删除文件

 

注意:delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站 

3、遍历文件夹

使用listFiles方法时的注意事项:

  • 当主调是文件,或者路径不存在时,返回null
  • 当主调是空文件夹时,返回一个长度为0的数组
  • 当主调是一个有内容的文件夹时,将里面所有一级文件 和文件夹的路径放在File数组中返回
  • 当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
  • 当主调是一个文件夹,但是没有权限访问该文件夹时,返回null

方法递归

  • 递归是一种算法,在程序设计语言中广泛应用
  • 从形式上说,方法调用自身的形式称为方法递归 

猴子吃桃

public class RecurisionTest4 {
    public static void main(String[] args) {
        //猴子吃桃
        /*发(10)=1
        * 公式: f(x)-f(x)/2-1=f(x+1)
        * f(x)=2*f(x+1)+2*/
        System.out.println(f(1));
        System.out.println(f(2));
        System.out.println(f(3));
        System.out.println(f(4));
        System.out.println(f(5));
        System.out.println(f(6));
        System.out.println(f(7));
        System.out.println(f(8));
        System.out.println(f(9));
        System.out.println(f(10));


    }
    public static int f(int x){
        if(x==10){
            return 1;
        }else{
            return  2*f(x+1)+2;
        }
    }
}

 

字符集

编码:把字符按照指定字符集编码成字节。

解码:把字节按照指定字符集解码成字符。

标准ASCII字符集

  • ASCII(American Standard Code for Information Interchange):美国信息交换标准代码,包括了英文、字符等
  • 标准ASCII使用一个字节存储一个字符,首尾是0,总共可表示128个字符,对美国人来说完全够用

GBK(汉字内码扩展范围,国标)

  • 汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式储存
  • 注意:GBK兼容了ASCII字符集 
  • GBK规定:汉字的第一个字节的第一位必须是1

Unicode字符集(统一码)

  • Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集。 
  • 4个字节表示一个字符,占存储空间,通信效率低

UTF-8

  • 是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节, 2个字节,3个字节,4个字节
  • 英文字符、数字等只占一个字节(兼容标准ASCII编码),汉字字符占用三个字节
  • 技术人员在开发时都应该使用utf-8编码

注意:

  1. 字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码
  2. 英文数字一般不会乱码,因为很多字符集都兼容了ASCII编码

IO流

  • 用于读写数据的(可以读写文件或网络中的数据) 输入输出流

I值Input,称为输入流:负责把数据读到内存中  O指输出流:负责写数据出去

io流的分类

字节输入流:

以内存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流

字节输出流:

 以内存为基准,把内存中的数据以字节写出到磁盘文件或者网络中去的流

字符输入流:

 以内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流

字符输出流:

 以内存为基准,把内存中的数据以字符写出到磁盘文件或者网络中去的流

 IO流-字节流

文件字节输入流

FileInputStream

  • 作用:以内存为基准,可以把磁盘文件中的数据以字节的形式读入到内存中去。

 注意事项:使用FileInputStream每次读取一个字节,读取性能较差,并且读取汉字输出会乱码;定义一个与文件一样大的字节数组,一次性读取完文件的全部字节可以保证不乱码

 一次读取完全部字节

方式一:自己定义一个字节数组与被读取的文件大小一样大,然后使用该字节数组,一次读完文件的全部字节。

方式二:Java官方为InputStream提供了如下方法,可以直接把文件的全部字节读取到一个字节数组中返回

 

 直接把文件数据全部读取到一个文件字节数组可以避免乱码,但是如果文件过大,创建的字节数组也会过大,可能引起内存溢出。

字节流适合做数据的转移;读写文本内容更适合用字符流

文件字节输出流

FileOutStream

  • 作用:以内存为基准,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

neoxyf2005

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

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

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

打赏作者

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

抵扣说明:

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

余额充值