Java中的FileOutputStream文件输出流10个示例

Java 提供了一组强大的文件处理 API,而 FileOutputStream 是向文件写入数据时的关键角色。在这篇博文中,我们将深入研究 FileOutputStream 的复杂性,并探索 10 个不同的代码示例来说明其各种功能。

例 1:基本文件输出流

import java.io.FileOutputStream;
import java.io.IOException;

public class BasicFileOutput {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("output.txt")) {
            String data =
"Hello, FileOutputStream!";
            byte[] byteArray = data.getBytes();
            fos.write(byteArray);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

说明本例演示了 FileOutputStream 的基本用法,即向名为 "output.txt "的文件中写入一个简单字符串。

例 2:写入字节数组

import java.io.FileOutputStream;
import java.io.IOException;

public class ByteArrayOutput {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("output.bin")) {
            byte[] byteArray = {65, 66, 67, 68, 69};
// ASCII values
            fos.write(byteArray);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

说明在这里,我们将一个字节数组写入二进制文件,代表 ASCII 数值。

例 3:写入部分数据

import java.io.FileOutputStream;
import java.io.IOException;

public class PartialDataOutput {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("partial_output.txt")) {
            String data =
"Java FileOutputStream Example";
            byte[] byteArray = data.getBytes();
            fos.write(byteArray, 0, 10);
// Writes only the first 10 characters
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

说明本例演示如何只将字节数组的一部分写入文件。

例 4:向文件追加数据

import java.io.FileOutputStream;
import java.io.IOException;

public class AppendToFile {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("output.txt", true)) {
            String data =
"\nAppending data to file.";
            byte[] byteArray = data.getBytes();
            fos.write(byteArray);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解释:演示如何以追加模式打开文件并添加新内容。

例 5:使用缓冲输出流

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedOutput {
    public static void main(String[] args) {
        try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("buffered_output.txt"))) {
            String data =
"Using BufferedOutputStream in Java.";
            byte[] byteArray = data.getBytes();
            bos.write(byteArray);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解释:演示如何使用 `BufferedOutputStream` 提高文件写入性能。

例 6:异步写入数据

import java.io.FileOutputStream;
import java.io.IOException;

public class AsyncOutput {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("async_output.txt")) {
            String data =
"Asynchronous FileOutputStream Example.";
            byte[] byteArray = data.getBytes();
            fos.write(byteArray);
            fos.flush();
// Flushes the stream
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解释:演示使用 `flush()` 异步写入文件。

例 7:使用数据输出流写入数据

import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataOutputExample {
    public static void main(String[] args) {
        try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("data_output.txt"))) {
            int intValue = 42;
            dos.writeInt(intValue);
            dos.writeUTF(
"DataOutputStream Example");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解释:说明如何使用 `DataOutputStream` 写入原始数据类型。

例 8:使用对象输出流写入对象

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class Person implements Serializable {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class ObjectOutputExample {
    public static void main(String[] args) {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
            Person person = new Person(
"John Doe", 30);
            oos.writeObject(person);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解释:演示如何使用 `ObjectOutputStream` 将对象写入文件。

示例 9:写入多个文件

import java.io.FileOutputStream;
import java.io.IOException;

public class MultipleFilesOutput {
    public static void main(String[] args) {
        try (FileOutputStream fos1 = new FileOutputStream("file1.txt");
             FileOutputStream fos2 = new FileOutputStream(
"file2.txt")) {

            fos1.write(
"Data for file 1".getBytes());
            fos2.write(
"Data for file 2".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解释:演示如何使用单独的 `FileOutputStream` 实例向多个文件写入内容。

例 10:处理异常

import java.io.FileOutputStream;
import java.io.IOException;

public class ExceptionHandlingExample {
    public static void main(String[] args) {
        try {
            FileOutputStream fos = new FileOutputStream("nonexistent_dir/output.txt");
            String data =
"Handling FileOutputStream Exceptions.";
            byte[] byteArray = data.getBytes();
            fos.write(byteArray);
            fos.close();
// Close the stream explicitly
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

说明:演示处理 FileOutputStream 时正确的异常处理。

结论:
在本综合指南中,我们通过 10 个代码示例探讨了 Java 中 FileOutputStream 的各个方面。从基本文件编写到对象序列化等高级主题,理解这些概念将使您具备在 Java 应用程序中处理各种文件输出操作的知识。