JavaAPI-File类

目录

一、io是什么?

二、流是什么?

三、输入与输出的参照物

四、File介绍

五、File格式

六、File的常用方法

七、递归算法

八、FileInputStream


一、io是什么?

1.input和output:专门用来操作文件的。

二、流是什么?

1.流动的字节。

三、输入与输出的参照物

1.输入与输出的参照物是我们当前的程序。

四、File介绍

1.File在java中被称为文件类,也就是说,不管是文件还是文件夹,都是File对象。

五、File格式

1.注意:在放文件或文件夹的路径的时候,一般推荐放相对路径。 

File file = new File("文件路径/文件夹路径");

六、File的常用方法

1.对象名.exists():判断文件或文件夹是否存在

File file = new File("123.txt");
System.out.println(file.exists());

2.对象名.isDirectory():判断当前的这个File对象是否是文件夹

File file = new File("123.txt");
System.out.println(file.isDirectory());

3.对象名.isFile():判断当前的File对象是否是文件

File file = new File("123.txt");
System.out.println(file.isFile());

4.对象名.length():获取当前File对象的字节长度(大小)

File file = new File("123.txt");
System.out.println(file.length());

5.对象名.createNewFile():创建一个新的文件

File file = new File("123.txt");
System.out.println(file.createNewFile());

6.对象名.delete():删除一个文件或文件夹

File file = new File("123.txt");
System.out.println(file.delete());

7.对象名.mkdir():创建一个文件夹

File file = new File("123");
System.out.println(file.mkdir());

8.对象名.getName():获取到当前文件的文件名(只获取文件名,不获取路径)

File file = new File("123.txt");
System.out.println(file.getName());

9.对象名.getPath():获取的文件的路径

// 实际上只是获取到了new一个File对象的时候,小括号中的字符串
File file = new File("123.txt");
System.out.println(file.getPath());

10.对象名.getAbsolutePath():获取到文件的绝对路径(全路径)

File file = new File("123.txt");
System.out.println(file.getAbsolutePath());

11.对象名.equals():在File类中的equals方法比较的是文件的路径,路径相同返回为true

File file = new File("123.txt");
File file2 = new File("456.txt");
System.out.println(file.equals(file2));

12.对象名.getParent():获取当前文件的相对路径的上一级目录的名字

File file = new File("123.txt");
System.out.println(file.getParent());

13.对象名.getParentFile():获取当前文件的相对路径的上一级目录的File对象

File file = new File("123.txt");
System.out.println(file.getParentFile());

14.对象名.isHidden():判断File对象是否是一个隐藏文件

File file = new File("123.txt");
System.out.println(file.isHidden());

15.对象名.lastModified():获取到File的最后修改时间

(1)最后修改时间/365/24/60/60/1000 + 1970 =当前年份

File file = new File("123.txt");
System.out.println(file.lastModified());

16.对象名.renameTo():重命名

File file = new File("123.txt");
File file2 = new File("345.txt");
file.renameTo(file2);

17.对象名.list():获取到文件夹下面的所有文件的名字列表

File file = new File("123.txt");
String[] list = file.list();

18.对象名.listFiles():获取到文件夹下面所有的File对象,返回值是一个File数组

File file = new File("123.txt");
File[] files = file.listFiles();

七、递归算法

1.递归的分类:

(1)直接递归:自己调自己;

(2)间接递归:A方法调用B方法,B方法调用C方法,C方法调用A方法;

2.递归的注意事项:

(1)递归一定要有条件限定,保证递归可以停下来,否则会发生栈内存溢出;

(2)在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈内存溢出;

(3)构造方法,禁止递归;

3.递归和死循环的区别

(1)递归有出口,死循环没有出口;   

4.递归和循环的区别

(1)递归算法:

  • 优点:代码简洁、清晰、并且容易验证其正确性(必须是真正了解了算法的情况下)。
  • 缺点:递归每一次运行都需要较多次的调用函数,如果调用层次比较深,需要额外的增加堆栈处理,会对执行效率有一定的影响,如果有一些代码不使用递归的话,代码会极其难看。

(2)循环算法:

  • 优点:优点:速度快,结构简单。
  • 缺点:缺点:并不是所有的问题都可以使用循环解决。

(3)总结 :

  • 一般递归调用可以处理的算法,也通过循环去解决常需要额外的低效处理。
  • 现在的编译器在优化后,对于多次调用的函数会有非常好的效率上的优化,效率未必低于循环。

八、FileInputStream

1.一般情况下,有Stream的就是字节流。

2.字符流:Reader/Writer。

3.字节输入流:FileInputStream

(1)对象名.read()

(2)read方法如果没有读到内容,会返回-1

File file = new File("F:\\Users\\Devil\\Desktop\\hash码.txt");
FileInputStream fis = new FileInputStream(file);
// 读取到第一个字节
int n = fis.read();
System.out.print((char) n);
// 通过byte数组读取整个文件
byte[] bytes = new byte[(int) file.length()];
fis.read(bytes);
System.out.println(new String(bytes));
// 通过byte数组分批次读取整个文件
byte[] bytes = new byte[16];
int n = -1;
while ((n = fis.read(bytes)) != -1){
    // 通过bytes的字节数组创建字符串对象
    // bytes:要转换的字节数组
    // 0:偏移量,从第几个字节开始转换
    // n:一共转换多少个字节
    System.out.print(new String(bytes,0,n));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

所愿ღ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值