JAVA-数据流

本文详细介绍Java中File类的功能,包括文件与目录的基本操作,如检查路径、创建与删除目录,以及处理文件属性。同时,深入探讨了字节流与字符流的概念,对比了它们在读写操作上的区别,并介绍了缓冲流、对象流等高级流的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

一,File相关类

作用:通过File对象实现对文件/文件夹的操作

主要方法:①该路径是否存在:file.exists()
②是否是一个文件夹:file.isDirectory()
③是否是一个文件:file.isFile()
④是否隐藏:file.isHidden()
⑤文件大小:file.length()
6.mkdir()和mkdirs()创建新文件夹

递归删除文件

public static void delete1(File file) {
if(file.isDirectory()) {//是否为一个文件夹
   File[] fi=file.listFiles();//获取当前文件夹下的所有子项
   for (File file2 : fi) {
   delete1(file2);
   }
   file.delete();
  }else {
   file.delete();
  }
 }
注意:mkdir()和mkdirs()的区别

mkdir():创建一个文件夹,当当前路径错误的时候就抛出错误

mkdirs():可以创建多个文件,当A下创建B再B下创建C时 //创建多层,但也可以创建单个文件夹

  • 这个方法当路径错误的时候,他会按照错误路径,创建多个文件夹

低级流

Java采用的是:unicode(两个字节)

1.字节输入流InputStream

概念:从外存读取数据到内存中(进行读操作)

主要方法: read():从输入流中读取数据

  • 读取文件时。当读到末尾的时候返回-1
byte[] bytes=new byte[3];//用来装输入流的数据
    int out=in.read(bytes);//建流存放到byte数组中
   for (byte b : bytes) {
    System.out.println(b);
   }

2.字节输出流OutputStream

概念:把数据流写入到文件中

OutputStream out=new FileOutputStream(file,true);//true时为文件追加

主要方法:
write():用来写数据到文件中,数据类型可以有byte和int

3.字符输入流/字符输出流

和字节流的区别:

  • 字节流读取中文字符时会乱码
  • 字符流通过字节读取,解决中文字符乱码的问题

高级流(依赖于低级流)

1.字符缓冲流

File file=new File("C:\\Users\\853565469\\Desktop\\TestFile\\A.txt");
   //创建字符输入流
   Reader reader=new FileReader(file);
//   创建字符缓冲流
   BufferedReader bf=new BufferedReader(reader);
   //读取一行数据
   String s=bf.readLine();
   s=bf.readLine();//当读到末尾会返回null
   System.out.println(s);

2.对象流(依赖低级流)

使用对象流时,对象必须序列化
即继承Serializable 接口

例对象输出流

//字节输出流
   OutputStream out=new FileOutputStream(file);
   //对象输出流,高级流
   ObjectOutputStream objOut=new ObjectOutputStream(out);
   /*
    * 创建对象
    * java.io.NotSerializableException://未序列化异常
    */
   User user=new User("张三", 1, "2345");
//   把对象写到对象流去
   objOut.writeObject(user);

3.易错区

1. 字符流与字节流的区别是
前者是块读写,后者是字节读写

2.字符输出流类的抽象父类是:Writer

要序列化的对象,其所属的类必须实现 Serializable 接口,序列化时通过类ObjectOutputStream的 WriteObject 方法来实现,反序列化通过ObjectInputStream类 __readObject___方法来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值