【JAVA篇】 I/O(输入输出)具体概述

简介: 【JAVA篇】 I/O(输入输出)具体概述

hello,大家好!我依旧是你们熟悉的槿凉。那么上周呢也是结识了很多咋们C平台的小伙伴,然后本周我的本地博主排名就到达了第二名,第一名也是我们学校的一位大三的学长,他非常厉害,目前已经拿到了网易的offer,真是非常羡慕呐! 那么,不能沉浸在这一丝丝喜悦当中,博客还是得继续更新,好了废话不多说,今天就来分享一下JAVA I/O篇的知识点,讲得不是很好,还希望小伙伴们多加指导啦!

定义:流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。

输入流InputStream类是字节输入流的抽象类,它是所有字节输入流的父类,具体层次结构图如下:(掌握画黄线的地方即可)

b2.jpg输出流OutputStream类是字节输出流的抽象类,此抽象类是表示字节流的所有类的超类,其具体层次结构图如下:(同样,只掌握黄色标记部分即可)

6fe0f846b62748459e22267bf0706bfb.jpg

注:输入输出流在遇到错误时都会引发IOException异常。(看不懂没关系,接下来的代码段就能理解了)

好,那么我们已经了解了输入输出流的基本概念,接下来我们讲File类

File类是java.io包中唯一代表磁盘文件本身的类,File类的对象主要用来获取文件本身的一些信息,如文件所在的目录,文件的长度,文件读写权限等。那么接下来我们看一个具体的例子:

packageyinghang;
importjava.io.File;
publicclassfile1 {
publicstaticvoidmain(String[] args) {
Filefile=newFile("D:\\word.txt"); // 创建文件对象if (file.exists()) { // 如果该文件存在file.delete(); // 将文件删除System.out.println("文件已删除"); // 输出的提示信息        } else { // 如果文件不存在try { // try语句块捕捉可能出现的异常file.createNewFile(); // 创建该文件System.out.println("文件已创建"); // 输出的提示信息            } catch (Exceptione) {
e.printStackTrace();
            }
            }
    }
    }

这个代码段的具体作用是向我们电脑的D盘根目录的word.txt文件中写入一句话,然后再读取出来输出在控制台上。(if else 语句的作用是判断D盘中是否有名为word的文件,如果有->删除,如果没有->创建一个名为word的文件)我们来看看具体运行结果:

这里我们提前创建好一个名称为word的文件我们来看运行结果:

c8253b42a93e4717873408b6976113d5.png

好,这个时候我们打开D盘看一下:

321a80a5c7c445f4b0822826955164f9.png

D盘里确实被我们创建了一个名为word的文件。

是不是很有趣呢?哈哈哈 ,那有的小伙伴就要问了,那可不可以向该word文档里面写入我们想写入的内容呢? 答案当然是可以的!

这里我们来介绍一下文件输入/输出流!

即FileInputStream 和  FileOutputStream类是用来操作磁盘文件。那么这里我们借助这两个类向D盘根目录的word.txt文件中写入我们想写入的内容,然后读取出来输出在控制台上。

importjava.io.*;
publicclassio {
publicstaticvoidmain(String[] args) {
// TODO 自动生成的方法存根Filefile=newFile("D:\\word.txt"); // 创建文件对象try { // 捕捉异常FileOutputStreamout=newFileOutputStream(file); // 创建FileOutputStream对象bytebuy[] ="人生苦短,及时行乐,吃喝玩乐,样样具占。".getBytes(); // 创建byte型数组out.write(buy); // 将数组中的信息写入到文件中out.close(); // 将流关闭        } catch (Exceptione) { // catch语句处理异常信息e.printStackTrace(); // 输出异常信息        }
try {
// 创建FileInputStream类对象FileInputStreamin=newFileInputStream(file);
bytebyt[] =newbyte[1024]; // 创建byte数组intlen=in.read(byt); // 从文件中读取信息System.out.println("文件中的信息是:"+newString(byt, 0, len));// 将文件中的信息输出in.close(); // 关闭流        } catch (Exceptione) {
e.printStackTrace();
        }
    }
}

9c55c0343ed34d12aa6d134a3fbf3391.png

显然,我们的代码是正确的。

同时这里我们再介绍一下FileReader 和 FileWriter 类,这两个类都只提供了对字节或字节数组的读取方法,这两个类对应了FileInputStream 和  FileOutputStream类。FileReader类顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源中其余的内容,直到源的末尾或流被关闭。

我们来看一个具体的例子:

importjava.io.*;
publicclassxie {
publicstaticvoidmain(String[] args) {
// TODO 自动生成的方法存根Filefile=newFile("D:\\word.txt"); // 创建文件对象try { 
FileWriterfw=newFileWriter(file); // 创建字符输出流Stringword="努力下去,你一定可以的,加油!!!"; // 写入的字符串fw.write(word); // 将字符串写入到文件中fw.close(); // 关闭流        } catch (IOExceptione) {
e.printStackTrace();
        }
try {
FileReaderfr=newFileReader(file);// 创建字符输入流charch[] =newchar[1024]; // 缓存字符数组intlen=fr.read(ch); // 将文件中的字符读入到缓存数组中System.out.println("文件中的信息是:"+newString(ch, 0, len));// 将字符转为字符串输出fr.close(); // 关闭流        } catch (IOExceptione) {
e.printStackTrace();
        }
    }
}


相关文章
|
2月前
|
Java 应用服务中间件 Docker
java-web部署模式概述
本文总结了现代 Web 开发中 Spring Boot HTTP 接口服务的常见部署模式,包括 Servlet 与 Reactive 模型、内置与外置容器、物理机 / 容器 / 云环境部署及单体与微服务架构,帮助开发者根据实际场景选择合适的方案。
111 25
|
6月前
|
开发框架 移动开发 Java
课时2:Java简介(Java发展概述)
课时2:Java简介(Java发展概述) 摘要: 1. Java基础知识:介绍Java作为编程语言及其思想。 2. Java的发展历史:从1991年GREEN项目到1995年正式推出,历经网景公司、HotJava浏览器等关键节点。 3. Java的版本信息:涵盖从JDK 1.0到JDK 1.8的主要版本及特性,如Lambda表达式和模块化支持。
|
存储 缓存 Java
Java中的缓冲流提升I/O性能,通过内存缓冲区减少对硬件访问
【6月更文挑战第22天】Java中的缓冲流提升I/O性能,通过内存缓冲区减少对硬件访问。`BufferedInputStream`和`BufferedOutputStream`用于字节流,缓存数据批量读写。`BufferedReader`和`BufferedWriter`处理字符流,支持按行操作。使用后务必关闭流。
155 3
|
存储 监控 Java
深入探索Java语言的NIO(New I/O)技术
深入探索Java语言的NIO(New I/O)技术
133 1
|
10月前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
112 2
Java I/O流面试之道
|
安全 Java API
Java 18 概述:新特性一览
Java 18 作为 Java 平台的最新版本,引入了多项令人振奋的新特性和改进,包括模式匹配、记录类型、流库改进、外部函数与内存 API 以及并发处理增强。这些新功能不仅提升了开发者的生产力,还显著增强了 Java 的性能和安全性。本文将详细介绍 Java 18 的主要新特性,并通过代码示例帮助读者更好地理解和应用这些功能。
254 3
|
存储 Oracle Java
01 Java概述基础与计算机基础(DOS+进制+原码反码补码)
01 Java概述基础与计算机基础(DOS+进制+原码反码补码)
113 17
|
存储 缓存 Oracle
可能是最漂亮的Java I/O流详解
大家有什么思路吗?评论区一起讨论讨论。我需要使用 Java 逐行读取大约 5-6 GB 的大型文本文件。我怎样才能快速完成此操作?最高赞的回答是叫Peter Lawrey的老哥回答的。大家好,我是南哥。一个Java学习与进阶的领路人,今天指南的是Java I/O流,跟着南哥我们一起在Java之路上成长。本文收录在我开源的《Java学习进阶指南》中,涵盖了想要学习Java、成为更好的Java选手都在偷偷看的核心知识、面试重点。
190 1
可能是最漂亮的Java I/O流详解
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
126 8
|
Java 数据安全/隐私保护
09 Java面向对象三大特征(概述)
09 Java面向对象三大特征(概述)
158 4

热门文章

最新文章