任务描述
本关任务:使用字节输出流将给定的字符串写入到给定的文件中。
相关知识
什么是 OutputStream 类
OutputStream 类是 Java 标准库提供的最基本的字节输出流。OutputStream 类也是抽象类,它是所有输出流的超类。
OutputStream 类的常用方法
OutputStream 类的常用子类
由于 OutputStream 类是抽象类,我们以它的子类 FileOutputStream 类为例,演示如何将数据写入到文件中。 将若干个字节写入文件流示例:
public static void main(String[] args) throws IOException{ // 抛出异常// 创建FileOutputStream对象OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");// 写入字节output.write(72); // 72代表H,以下类推output.write(101); // eoutput.write(108); // loutput.write(108); // loutput.write(111); // o// 关闭流output.close();}执行结果:在C:/Users/yy/Desktop目录下的a.txt文件中写入了 Hello 字符串。
每次写入一个字节非常麻烦,更常见的方法是一次性写入若干字节。这时,可以用 OutputStream 提供的重载方法 write(byte[]) 来实现:
public static void main(String[] args) throws IOException{ // 创建FileOutputStream对象OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");// 写入数据output.write("Hello".getBytes("UTF-8")); // 将字符串通过getBytes()方法转换为字节数组 // 关闭流output.close(); }和 InputStream 类一样,上述代码没有考虑到在发生异常的情况下如何正确地关闭资源。写入过程也会经常发生 IO 错误,例如,磁盘已满,无权限写入等等。我们需要用 try(resource) 来保证 OutputStream 类在无论是否发生 IO 错误的时候,都能够正确地关闭:
public static void main(String[] args) throws IOException{try{// 创建FileOutputStream对象OutputStream output = new FileOutputStream("C:\\Users\\yy\\Desktop\\a.txt");// 写入数据output.write("Hello".getBytes("UTF-8")); // 将字符串通过getBytes()方法转换为字节数组 } // 编译器在此自动为我们写入finally并调用close() } - import java.io.*;
- import java.util.Scanner;
-
- public class FileTest {
- public static void main(String[] args) throws IOException {
- // 请在Begin-End间编写完整代码
- /********** Begin **********/
- // 接收给定字符串
- Scanner input = new Scanner(System.in);
- String str = input.next();
- // 切割字符串
- String[] array = str.split(",");
- // 创建FileOutputStream对象
- FileOutputStream fileOutputStream = new FileOutputStream(array[1]);
- // 写入数据
- fileOutputStream.write(array[0].getBytes());
- fileOutputStream.close();
- /********** End **********/
- }
- }