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 应用程序中处理各种文件输出操作的知识。