0


如何使用OutputStream类实现文件的读写操作?

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

哈喽,各位小伙伴们,你们好呀,我是喵手。

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

在Java中,输入输出流是非常重要的概念。输入流用于读取数据,而输出流则用于将数据写入到输出目的地。在本文中,我们将着重介绍Java中的OutputStream类,这是一个抽象类,用于向各种输出目的地写入数据。

摘要

本文将介绍使用Java中的OutputStream类进行文件、网络、控制台的输出操作,并会分析该类的优缺点。

OutputStream类

简介

在Java中,OutputStream类是一个抽象类,它提供了向各种输出目的地写入数据的一般方法。OutputStream类是所有输出流类的祖先类,包括FileOutputStream、ByteArrayOutputStream、PipedOutputStream等。

OutputStream类的主要方法是write()。它的基本形式接受一个字节,但也有其他几种变体形式,如写入整个字节数组、部分字节数组等。

源代码解析

Java中的OutputStream类是一个抽象类,它是字节输出流的基类。OutputStream类提供了许多方法,用于将字节写入输出流中。

以下是OutputStream类的一些常见方法:

  • public void write(int b):将指定的字节写入输出流。
  • public void write(byte[] b):将b数组中的所有字节写入输出流。
  • public void write(byte[] b, int off, int len):将b数组中从off位置开始的len个字节写入输出流。
  • public void flush():刷新输出流,强制将所有缓冲的输出字节写入底层输出流。
  • public void close():关闭输出流并释放与该流相关联的所有系统资源。

OutputStream类的实现通常是通过子类来完成的,例如FileOutputStream、ByteArrayOutputStream、PipedOutputStream等。

以下是OutputStream类的部分源代码:

publicabstractclassOutputStreamimplementsCloseable,Flushable{// …publicvoidwrite(byte b[])throwsIOException{write(b,0, b.length);}publicvoidwrite(byte b[],int off,int len)throwsIOException{if(b ==null){thrownewNullPointerException();}elseif(off <0|| len <0|| off + len > b.length){thrownewIndexOutOfBoundsException();}elseif(len ==0){return;}for(int i =0; i < len; i++){write(b[off + i]);}}publicabstractvoidwrite(int b)throwsIOException;publicvoidflush()throwsIOException{}publicvoidclose()throwsIOException{}// …}

从以上代码可以看出,OutputStream类定义了抽象方法write(),其余方法都是具体实现的。在write(byte b[])和write(byte b[], int off, int len)方法中,也调用了write(int b)方法来实现写入操作。

OutputStream类还实现了Closeable和Flushable接口,使得它可以通过调用close()和flush()方法来关闭和刷新输出流。

  如下是部分源码截图:

在这里插入图片描述

应用场景案例

OutputStream类可以用于多种输出目的地,如文件、网络、控制台等。下面是一些常见的应用场景案例:

1. 将数据写入文件

使用FileOutputStream可以将数据写入文件。以下是一个示例:

FileOutputStream fos =newFileOutputStream("output.txt");for(int i =0; i <10; i++){
    fos.write(i);}
fos.close();

2. 将数据写入网络

使用SocketOutputStream可以将数据写入网络。以下是一个示例:

Socket socket =newSocket("127.0.0.1",8080);OutputStream os = socket.getOutputStream();
os.write("Hello, world".getBytes());
os.close();

3. 将数据打印到控制台

使用System.out可以将数据打印到控制台。以下是一个示例:

System.out.write("Hello, world".getBytes());

优缺点分析

优点

  • OutputStream类具有通用性,可以向多种输出目的地写入数据。
  • OutputStream类提供了多种写入数据的方法,可以根据需求选择适当的方法。
  • OutputStream类是抽象类,可以被继承并进行扩展。

缺点

  • OutputStream类的write()方法不能保证一次写入所以数据都成功,需要在外部进行判断并处理。

类代码方法介绍

以下是OutputStream类的主要方法:
方法名称说明write(int b)将指定的字节写入输出流write(byte[] b)将指定的字节数组写入输出流write(byte[] b, int off, int len)将指定的字节数组中的一部分写入输出流flush()刷新输出流close()关闭输出流

测试用例

测试代码演示

以下是一个OutputStream的测试用例:

packagecom.example.javase.se.classes;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;/**
 * @Author ms
 * @Date 2023-11-05 18:26
 */publicclassOutputStreamTest{publicstaticvoidmain(String[] args){// 写入文件try{FileOutputStream fos =newFileOutputStream("test.txt");byte[] data ="Hello, world!".getBytes();
            fos.write(data);
            fos.flush();
            fos.close();}catch(IOException e){System.out.println("写入文件时发生错误:"+ e);}// 写入控制台OutputStream os =System.out;byte[] data ="Hello, world!".getBytes();try{
            os.write(data);
            os.flush();
            os.close();}catch(IOException e){System.out.println("写入控制台时发生错误:"+ e);}}}

测试结果

  根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。

在这里插入图片描述

测试代码分析

  根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。

这是一个使用Java的输出流(OutputStream)进行写操作的示例代码。代码主要包括两部分:

第一部分在文件系统中创建一个名为“test.txt”的文本文件,并在该文件中写入“Hello, world!”字符串。

第二部分将同样的字符串输出到控制台。输出流通过System.out获取,然后将字符串转换为字节数组,使用write方法将字节数组写入控制台。最后通过flush和close方法刷新并关闭输出流。

需要注意的是,这里的文件和控制台的输出流类型都是OutputStream,这个抽象类提供了写入字节数据的通用方法,实际使用时需要根据具体需求选择不同的OutputStream子类进行实例化。

全文小结

在本文中,我们介绍了Java中的OutputStream类,该类提供了向各种输出目的地写入数据的一般方法。我们学习了如何使用OutputStream将数据写入文件、网络、控制台等目的地,并分析了该类的优缺点。最后,我们提供了一个OutputStream的测试用例。

总结

本文介绍了Java中的OutputStream类,它是一个抽象类,提供了向各种输出目的地写入数据的一般方法。我们学习了如何使用OutputStream将数据写入文件、网络、控制台等目的地,并分析了该类的优缺点。此外,本文还提供了一个OutputStream的测试用例。总的来说,OutputStream是Java中重要的输出流类之一,提供了许多方法,可以根据需求选择适当的方法来实现数据的写入操作。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。


本文转载自: https://blog.csdn.net/weixin_66592566/article/details/138545254
版权归原作者 喵手 所有, 如有侵权,请联系我们删除。

“如何使用OutputStream类实现文件的读写操作?”的评论:

还没有评论