• 学习-Java输入输出之OutputStream类之字节数据输出


    任务描述

    本关任务:使用字节输出流将给定的字符串写入到给定的文件中。

    相关知识

    什么是 OutputStream 类

    OutputStream 类是 Java 标准库提供的最基本的字节输出流。OutputStream 类也是抽象类,它是所有输出流的超类

    OutputStream 类的常用方法

    • write()方法:这个方法会写入一个字节到输出流;
    • close()方法:这个方法用于关闭输出流;
    • flush()方法:这个方法是将缓冲区的内容真正输出到目的地。

    OutputStream 类的常用子类

    • FileOutputStream 类:用于将数据写入到输出流文件;
    • ByteArrayOutputStream 类:在内存中模拟一个字节流输出。。

    由于 OutputStream 类是抽象类,我们以它的子类 FileOutputStream 类为例,演示如何将数据写入到文件中。 将若干个字节写入文件流示例:

     
    
    1. public static void main(String[] args) throws IOException{ // 抛出异常
    2. // 创建FileOutputStream对象
    3. OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");
    4. // 写入字节
    5. output.write(72); // 72代表H,以下类推
    6. output.write(101); // e
    7. output.write(108); // l
    8. output.write(108); // l
    9. output.write(111); // o
    10. // 关闭流
    11. output.close();
    12. }

    执行结果:在C:/Users/yy/Desktop目录下的a.txt文件中写入了 Hello 字符串。

    每次写入一个字节非常麻烦,更常见的方法是一次性写入若干字节。这时,可以用 OutputStream 提供的重载方法 write(byte[]) 来实现:

     
    
    1. public static void main(String[] args) throws IOException{
    2. // 创建FileOutputStream对象
    3. OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");
    4. // 写入数据
    5. output.write("Hello".getBytes("UTF-8")); // 将字符串通过getBytes()方法转换为字节数组
    6. // 关闭流
    7. output.close();
    8. }

    和 InputStream 类一样,上述代码没有考虑到在发生异常的情况下如何正确地关闭资源。写入过程也会经常发生 IO 错误,例如,磁盘已满,无权限写入等等。我们需要用 try(resource) 来保证 OutputStream 类在无论是否发生 IO 错误的时候,都能够正确地关闭:

     
    
    1. public static void main(String[] args) throws IOException{
    2. try{
    3. // 创建FileOutputStream对象
    4. OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");
    5. // 写入数据
    6. output.write("Hello".getBytes("UTF-8")); // 将字符串通过getBytes()方法转换为字节数组
    7. } // 编译器在此自动为我们写入finally并调用close()
    8. }
      1. import java.io.*;
      2. import java.util.Scanner;
      3. public class FileTest {
      4. public static void main(String[] args) throws IOException {
      5. // 请在Begin-End间编写完整代码
      6. /********** Begin **********/
      7. // 接收给定字符串
      8. Scanner input = new Scanner(System.in);
      9. String str = input.next();
      10. // 切割字符串
      11. String[] array = str.split(",");
      12. // 创建FileOutputStream对象
      13. FileOutputStream fileOutputStream = new FileOutputStream(array[1]);
      14. // 写入数据
      15. fileOutputStream.write(array[0].getBytes());
      16. fileOutputStream.close();
      17. /********** End **********/
      18. }
      19. }

  • 相关阅读:
    操作符一些代码题
    MVVM的构建(java&kotlin)
    mybatis 拦截器
    LeetCode 460. LFU 缓存
    Unlikely argument type for equals(): SysUser seems to be unrelated to String
    MySql数据类型
    Python基础 --(1)Python概述
    汇编程序学习
    【Netty】TCP拆包黏包问题讲解_基础概念介绍
    CrossOver2023(Mac电脑运行Windows软件)
  • 原文地址:https://blog.csdn.net/weixin_46075438/article/details/128074173