OutputStream——FileOutputStream使用示例

本文介绍了如何使用Java的FileOutputStream类来创建和写入文件。包括基本的文件写入方法及如何逐字节写入,还演示了如何通过设置append参数为true实现文件内容的追加而非覆盖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FileOutputStream类的构造方法如下:

public FileOutputStream(File file)throws FileNotFoundException

public class Test{
     public static void main(String[] args) throws IOException {
         File f = new File("d:" + File.separator+"test.txt");
         OutputStream out=new FileOutputStream(f);//如果文件不存在会自动创建
         String str="Hello World";
         byte[] b=str.getBytes();
         out.write(b);//因为是字节流,所以要转化成字节数组进行输出
         out.close();
    }
 }


一个字节一个字节进行输出
public class Test {
public static void main(String[] args) throws IOException {
File f = new File("d:" + File.separator+"test.txt");
OutputStream out=new FileOutputStream(f);//如果文件不存在会自动创建
         String str="Hello World";
         byte[] b=str.getBytes();
        for(int i=0;i<b.length;i++){
            out.write(b[i]);
         }
        out.close();
     }
 }


以上输出只会进行覆盖,如果要追加的话,请看FileOutputStream类的另一个构造方法:

public FileOutputStream(File file,boolean append)throws FileNotFoundException

在构造方法中,如果将append的值设置为true,则表示在文件的末尾追加内容。

public class Test11 {
     public static void main(String[] args) throws IOException {
         File f = new File("d:" + File.separator+"test.txt");
         OutputStream out=new FileOutputStream(f,true);//追加内容
         String str="\r\nHello World";
         byte[] b=str.getBytes();
         for(int i=0;i<b.length;i++){
             out.write(b[i]);
         }
         out.close();
     }
 }



### 创建和初始化 `OutputStream` 对象的方法 在 Java 中,`OutputStream` 是一个抽象类,无法直接实例化。通常情况下,开发者会使用其子类来创建具体的输出流对象。常见的子类包括 `FileOutputStream`、`ByteArrayOutputStream` 和 `BufferedOutputStream` 等。 #### 1. 使用 `FileOutputStream` 创建文件输出流 `FileOutputStream` 可用于向文件写入数据。以下是一个简单的例子: ```java import java.io.FileOutputStream; import java.io.IOException; public class FileStreamExample { public static void createFileStream() { try (FileOutputStream fos = new FileOutputStream("example.txt")) { String data = "Hello, world!"; byte[] bytes = data.getBytes(); fos.write(bytes); } catch (IOException e) { e.printStackTrace(); } } } ``` 在这个例子中,`FileOutputStream` 被用来创建一个新的文件并写入字符串 `"Hello, world!"` 的字节表示形式[^2]。 #### 2. 使用 `ByteArrayOutputStream` 创建内存中的字节输出流 如果需要将数据写入内存而不是外部文件,则可以使用 `ByteArrayOutputStream`。这是一个典型的用法示例: ```java import java.io.ByteArrayOutputStream; import java.io.IOException; public class MemoryStreamExample { public static void createMemoryStream() { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { String data = "Data written to memory."; byte[] bytes = data.getBytes(); baos.write(bytes); // 获取最终的字节数组 byte[] result = baos.toByteArray(); System.out.println(new String(result)); } catch (IOException e) { e.printStackTrace(); } finally { try { if (baos != null) { baos.close(); } } catch (IOException ex) { ex.printStackTrace(); } } } } ``` 这里展示了如何使用 `ByteArrayOutputStream` 将数据保存到内存中,并通过调用 `toByteArray()` 方法获取完整的字节数组[^3]。 #### 3. 使用装饰器模式增强功能 为了增加额外的功能(如缓冲或加密),可以结合装饰器模式与其他流一起使用。例如,下面是如何使用 `BufferedOutputStream` 提高性能的例子: ```java import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class BufferedStreamExample { public static void createBufferedStream() { try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("buffered_example.txt"))) { String data = "This is buffered output stream example."; byte[] bytes = data.getBytes(); bos.write(bytes); } catch (IOException e) { e.printStackTrace(); } } } ``` 在这里,`BufferedOutputStream` 缓冲了底层 `FileOutputStream` 的写操作,从而减少了磁盘 I/O 操作次数[^1]。 --- ### 总结 以上介绍了几种常见的方式来创建和初始化 `OutputStream` 对象。具体选择哪种方式取决于应用场景需求——是需要写入文件还是仅限于内存操作;是否追求更高的效率或者附加特性支持等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值