0
点赞
收藏
分享

微信扫一扫

Java--IO流(File对象)

cnlinkchina 2022-04-20 阅读 35

File对象

File的介绍

File 类 就是当前系统中 文件或者文件夹的抽象表示
    
通俗的讲  就是 使用File对象 来操作我们电脑系统中的文件或者文件夹

学习File类 其实就是学习 如何通过file对象 对系统中的文件/文件夹进行增删改查

1.创建file对象

File 名字 =new File(路径);

路径path即:"什么盘/什么文件/什么文件/什么文件";

 路径分割符
         *  D:\haha\hehe\123.mp4    称之为路径  其中 \ 就是路径分割符 代表的是 下级目录
         *  在windows系统中 路径分割符为  \   在 Linux 和 Mac 中 路径分割符是 /
         *  我们写的java代码  需要跨平台 多环境运行   开发环境:windows   生成环境:Linux
         *  此时就会出现一个问题  如果我们的路径分隔符 写成 \  在 windows中好使 到了 Linux就不识别
         *  所以我们可以使用以下两种方式解决:

方式一:windows不仅支持\还支持/

File 名字 =new File("D:/abc/a/123.txt");

方式二:使用动态识别的常量,File.separator根据当前代码所在的系统获取相应的分隔符

File 名字=new File("D:"+File.separator+"abc"+File.separator+"a"+File.separator+"123.txt");

2.file的增加操作

我们创建了一个新的file对象并不是在电脑中已经添加了文件,在电脑中创建文件需要file的添加

一定记得要抛出错误

(1)创建相应的文件:

file对象.createNewFile();

(2)创建单层目录:

file对象.mkdir();

mkdir:make directory

(3)创建多层目录:

file对象.mkdirs()

根据你调用的方法不同会创建不同类型的文件

 File file01=new File("D:/Lianxi/hello.text");
file01.createNewFile();//创建文件
File file02=new File("D:/Lianxi/aaa");
file02.mkdir();//创建单层目录
File file03=new File("D:/Lianxi/A1/A2");
file03.mkdirs();//创建多层目录

3.file的删除操作

(1)删除文件:

file对象名字.delete();

(2)延迟删除(休眠删除)

file对象名字.deleteOnExit();//当程序退出后 删除

Thread.sleep(毫秒);

记得要抛出异常不然sleep会报错

(3)删除空目录

file对象.delete();

删除目录的前提一定是目录下没有文件即该目录为空目录;

        File file04=new File("D:/Lianxi/eee");
//删除指定的文件
file04.delete();
File file05=new File("D:/Lianxi/hello.text");
//延迟删除文件也可以叫做休眠删除文件
file04.deleteOnExit();//程序退出后删除
//多少毫秒后删除
Thread.sleep(5000);
File file06=new File("D:/Lianxi/A1/A2");
//删除目录文件前提是空目录
file06.delete();

4.file的修改操作

(1)设置该文件的权限为不能读:

file对象.setRedadable(false);

(2)设置该文件的全选为不能写:

file对象.setWritable(false);

(3)设置文件为只读权限:

file对象.setReadOnly()

(4)重命名(剪切)

file对象.renameTo(new File(你要修改的路径));

        //创建一个file对象
File file01=new File("D:/Lianxi/123.txt");
//对原始文件进行重命名
file01.renameTo(new File("D:/Lianxi/456.txt"));
File file02=new File("D:/Lianxi/456.txt");
//修改路径
file01.renameTo(new File("D:/Lianxi/A1/A2/789.txt"));

5.file的查询操作

(1)得到当前文件的名称

file对象.getName();

(2)得到父级路径的名称

file对象.getParent();

(3)得到文件的路径名称:

file对象.Path();

(4)判断该对象文件是否为文件类型:

file对象.isFile();

如果是返回true否则返回false;

(5)判断该文件对象是否为目录类型

file对象.isDirectory();

如果是文件目录类型返回true否则返回false;

        File file=new File("D:/Lianxi/A1/A2/789.txt");
//获取当前文件的文件名
String str1=file.getName();
// System.out.println("文件名为:"+str1);
//获取当前文件的父级路径
String str2=file.getParent();
//System.out.println("文件的父级路径为:"+str2);
//获取文件的路径
String str3=file.getPath();
System.out.println("文件的路径为:"+str3);
//判断是否为文件类型
boolean b1=file.isFile();
System.out.println(b1);
//判断该文件是否为文件目录类型
boolean b2=file.isDirectory();
System.out.println(b2);

面试题:显示指定目录下的所有文件

用方法的递归调用

 public static void main(String[] args) {
showFile("D:/Lianxi");
}
public static void showFile(String path){
//1.创建一个文件对象把路径参数传入
File file01=new File(path);
//2.判断文件类型,是否是文件是否是文件目录
if(!file01.exists() || !file01.isDirectory()){
return;
}
//3.创建一个文件数组来进行循环遍历;
File[] files=file01.listFiles();
//4.用for each循环来遍历输出
for(File f:files){
//5.判断文件类型是否为文件目录
//如果是文件目录
if(f.isDirectory()){
//输出文件目录所在的路径
System.out.println(f.getPath()+"<Dir>");
//继续调用本方法
showFile(f.getPath());
}
else {
//如果不是则输出文件所在的路径
System.out.println(f.getPath());
}
}
}

IO流

IO流的介绍

IO都是全大写 说明肯定是两个单词的首字母
I   inputstream 输入流     O  outputstream  输出流

IO 称之为 java的输入输出

        其实学习IO  就是学习  如何通过java代码 对文件内容 进行   读(输入流)  写(输出流)
所以有一话:   读进来 写出去

IO的作用:就是对文件中的内容进行操作。

输入: 读操作(读取文件的内容)   输出: 写操作(往文件中写内容)

 IO流的分类:

 (1)根据流的方向:
    ---输入流: 程序可以从中读取数据的流。
    ---输出流: 程序能向其中写入数据的流。
    
 (2)根据流的单位:
    ---字节流: 以字节为单位传输数据的流
    ---字符流: 以字符为单位传输数据的流
 
 (3)根据功能
    ---节点流: 直接和文件进行交互,用于直接操作目标设备的流。
    ---处理流(过滤流): 不是直接作用在文件上。 是对一个已存在流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。
    
四个基本的流: 其他的流都是在这四个流的基础上进行扩展的
        字节输入流
        字节输出流
    
        字符输入流
        字符输出流

 

 

 

 Writer字符输出流

它是所有字符输出流的根类。---FileWriter类

字符输出流 ---指定对哪个文件(路径)进行写操作

1.创建:

Writer write对象=new FileWriter(路径)

2.添加

writer对象.write(内容);

3.刷新流

write对象.flush();

4.关闭流资源

write.close();

5.追加内容

上面每次往文件中写内容时 就会把原来的内容覆盖了。

我们只需要在创建write对象时在路径后加上true即:

Writer write对象=new FileWriter(路径,true)

举报

相关推荐

0 条评论