当前位置: 首页 > ops >正文

java中的io流

Java中通过 java.io.File 类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。注意,有File对象, 并不代表真实存在该⽂件。

1.File类

1.1属性

1.2构造方法

一个File对象就表示一个硬盘上的文件,

在构造方法时就需要将这个文件路径写进去

主要选择第二种

1.3方法

1.3.1返回文件信息

报错一般是程序怕传入的文件不存在

声明一下异常就行了

1.3.2对文件的判断和创建

import java.io.File;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {File file=new File("d:\\test.txt");//这个文件是不存在的//1.boolean exists()判断File对象描述的⽂件是否真实存在System.out.println(file.exists());//2.boolean isDirectory()判断File对象代表的⽂件是否是⼀个目录(是否是个文件夹)System.out.println(file.isDirectory());File file1=new File("d:");System.out.println(file1.isDirectory());//3.boolean isFile()判断File对象代表的⽂件是否是⼀个普通文件System.out.println(file.isFile());//4.boolean createNewFile()根据File对象,⾃动创建⼀个空⽂件,成功创建后返回trueSystem.out.println(file.createNewFile());//1.boolean exists()判断File对象描述的⽂件是否真实存在System.out.println(file.exists());//2.boolean isDirectory()判断File对象代表的⽂件是否是⼀个目录(是否是个文件夹)System.out.println(file.isDirectory());//3.boolean isFile()判断File对象代表的⽂件是否是⼀个普通文件System.out.println(file.isFile());//5. boolean delete()根据File对象,删除该⽂件。成功删除后返回trueSystem.out.println(file.delete());}
}

创建新文件,一开始是没有的

运行以后

删除文件运行以后

1.3.3对文件的删除

1.3.4对目录信息的获取

1.3.4对目录的创建

1.创建单个文件夹

2.创建多层文件夹

1.3.5对文件进行改名

程序执行之前

程序执行之后

注意不同类型之间的文件也能进行修改,也会将文件的类型进行改变

1.3.6对文件访问的权限

2.文件内容的读写--数据流

2.1字符流

2.1.1Reader

Reader是一个抽象类,不能new实例,只能new子类

read主要有三个方法

注意文件操作完记得对文件进行close

有可能前面的程序发生异常,后面的close就会执行不到,所以可以这样写

也可以这样

try with resources

这个语法目的就是

()中定义的变量

会在代码快结束时,自动地调用close方法(无论是正常进行还是抛出了异常)

2.1.1.1无参read

无参read(),一次就读取一个字符

结果

2.1.1.2char【】参数的read

系统会尽量读满这个数组,如果文件中的数据超出了数组的大小,就会重复的的填满这个数组。

三个参数的read,一次的去若干个字符,会把参数执行的cbuf数组中,中的从off这个位置开始,到len这个长度的范围,尽量填满

2.1.2FileWriter

创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。

构造方法

FileWriter(File file)FileWriter(File file, boolean append)

参数:

  • file:要写入数据的 File 对象。
  • append:如果 append 参数为 true,则将字节写入文件末尾处,相当于追加信息。如果 append 参数为 false, 则写入文件开始处。

2.2字节流

2.2.1InputStream 概述

2.2.1.1FileInputStream 概述

该流用于从文件读取数据,它的对象可以用关键字 new 来创建。

有多种构造方法可用来创建对象。

可以使用字符串类型的文件名来创建一个输入流对象来读取文件:

可以使用字符串类型的文件名来创建一个输入流对象来读取文件:

也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:

InputStream f = new FileInputStream("C:/java/hello");File f = new File("C:/java/hello");
InputStream in = new FileInputStream(f);

下面这些就是返回的是ascii码值

2.2.2OutputStream概述 

2.2.2.1FileOutoutStream概述

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

1.使用字符串类型的文件名来创建一个输出流对象:

OutputStream f = new FileOutputStream("C:/java/hello")

2.也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:

File f = new File("C:/java/hello");
OutputStream fOut = new FileOutputStream(f);’

2.3缓冲流

2.3.1字节缓冲流

BufferedInputStream、BufferedOutputStream(缓冲字节流)

public class IOTest {public static void write(File file) throws IOException {// 缓冲字节流,提高了效率BufferedOutputStream bis = new BufferedOutputStream(new FileOutputStream(file, true));// 要写入的字符串String string = "综上所述,轮廓系数是一种有效的评估K-means聚类效果的度量指标。通过计算每个样本点的轮廓系数并取平均值,可以直观地了解聚类效果的好坏,并为优化聚类算法提供指导。";// 写入文件bis.write(string.getBytes());// 关闭流bis.close();}public static String read(File file) throws IOException {BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));// 一次性取多少个字节byte[] bytes = new byte[1024];// 用来接收读取的字节数组StringBuilder sb = new StringBuilder();// 读取到的字节数组长度,为-1时表示没有数据int length = 0;// 循环取数据while ((length = fis.read(bytes)) != -1) {// 将读取的内容转换成字符串sb.append(new String(bytes, 0, length));}// 关闭流fis.close();return sb.toString();}
}

2.3.2字符缓冲流

BufferedReader、BufferedWriter(字符缓冲流)

public class IOTest {public static void write(File file) throws IOException {// BufferedWriter fw = new BufferedWriter(new OutputStreamWriter(new// FileOutputStream(file, true), "UTF-8"));// FileWriter可以大幅度简化代码BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));// 要写入的字符串String string = "Java 在 UNIX 和 Windows 自动按约定分辨文件路径分隔符。如果你在 Windows 版本的 Java 中使用分隔符 (/) ,路径依然能够被正确解析。";bw.write(string);bw.close();}public static String read(File file) throws IOException {BufferedReader br = new BufferedReader(new FileReader(file));// 用来接收读取的字节数组StringBuilder sb = new StringBuilder();// 按行读数据String line;// 循环取数据while ((line = br.readLine()) != null) {// 将读取的内容转换成字符串sb.append(line);}// 关闭流br.close();return sb.toString();}
}
http://www.xdnf.cn/news/5406.html

相关文章:

  • 专题一:汉诺塔问题:递归算法的精妙解析
  • PyGame游戏开发(含源码+演示视频+开结题报告+设计文档)
  • 【LwIP源码学习6】UDP部分源码分析
  • [思维模式-28]:《本质思考力》-8- 两种相反的构建与解构系统的思维模式:①自顶向下的分解、牵引;②自底向上的堆叠、聚合
  • 深入剖析 MyBatis 位运算查询:从原理到最佳实践
  • AI文字识别工具汇总
  • 控制LED灯设备
  • Linux epoll 详解:概念、使用、数据结构、流程及应用
  • C++:友元
  • CSS 基础知识分享:从入门到注意事项
  • 50.辐射抗扰RS和传导抗扰CS测试环境和干扰特征分析
  • Vue:生命周期钩子
  • 海上风电场数字孪生,可视化智慧运维
  • 20242817李臻《Linux⾼级编程实践》第9周
  • 鸿蒙开发RelativeContainer自适应高度
  • HTTP3详解
  • MySQL为什么选择B+树
  • TikTok 互动运营干货:AI 助力提升粘性
  • Next.js框架学习系列之一
  • Vue 中el和data的两种写法
  • 基于神经网络的无源雷达测向系统仿真实现
  • Transformer KV缓存优化(MHA、MQA、GQA、MLA,参考:DeepSeek-V2)
  • GitHub 趋势日报 (2025年05月10日)
  • 【音视频工具】MP4BOX使用
  • GO语言内存管理结构
  • 远程服务器pycharm运行tensorboard显示训练轮次图
  • 【多模态】IMAGEBIND论文阅读
  • 数据分析基础:需要掌握的入门知识
  • python 实现sha加密
  • 数字电子技术基础(五十七)——边沿触发器