【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();
        }
    }
}


相关文章
|
23天前
|
IDE Oracle Java
java基础教程(1)-Java概述和相关名词解释
【4月更文挑战第1天】Java是1995年Sun Microsystems发布的高级编程语言,以其跨平台特性著名。它介于编译型和解释型语言之间,通过JVM实现“一次编写,到处运行”。Java有SE、EE和ME三个版本,分别针对标准、企业及嵌入式应用。JVM是Java虚拟机,确保代码在不同平台无需重编译。JRE是运行环境,而JDK包含开发工具。要安装Java开发环境,可从Oracle官网下载JDK,设置JAVA_HOME环境变量并添加到PATH。
|
2月前
|
Java
Java输入输出
Java输入输出
16 0
|
2月前
|
Java API
Java中文件与输入输出
Java中文件与输入输出
|
2月前
|
存储 Java
Java输入输出
Java输入输出
|
1天前
|
存储 Java
Java的`java.io`包包含多种输入输出类
Java的`java.io`包包含多种输入输出类。此示例展示如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着分配一个`byte`数组存储流中的数据。通过`read()`方法读取数据,然后将字节数组转换为字符串打印。最后关闭输入流释放资源。`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
7 1
|
3天前
|
安全 Java API
Java 8新特性概述及其对编程实践的影响
【4月更文挑战第30天】本文将详细讨论Java 8的新特性,包括Lambda表达式、Stream API以及Optional类等,并探讨这些新特性如何改变了Java编程的实践。我们将通过实例代码展示这些新特性的用法,并分析其对提高代码可读性和编写效率的影响。
|
19天前
|
存储 监控 Java
Java输入输出:什么是NIO(New I/O)?
Java NIO是一种高效I/O库,特征包括非阻塞性操作、通道(如文件、网络连接)、缓冲区和选择器。选择器监控通道状态变化,通知应用程序数据可读写,避免轮询,提升性能。示例代码展示了一个使用NIO的服务器,监听连接、读取数据并处理客户端通信。
14 1
|
20天前
|
存储 Java
Java输入输出:解释一下序列化和反序列化。
Java中的序列化和反序列化是将对象转换为字节流和反之的过程。ObjectOutputStream用于序列化,ObjectInputStream则用于反序列化。示例展示了如何创建一个实现Serializable接口的Person类,并将其序列化到文件,然后从文件反序列化回Person对象。
26 5
|
21天前
|
JavaScript Java 编译器
Java概述:跨足编程世界的瑞士军刀
Java概述:跨足编程世界的瑞士军刀
46 0
Java概述:跨足编程世界的瑞士军刀
|
2月前
|
Java
JAVA异常概述
JAVA异常概述
9 1