Java生成File文件大小为0问题

本文介绍了一个Java中FileWriter未正确flush导致文件大小为0KB的问题,并提供了修改后的解决方案,即在BufferedWriter.flush()后增加FileWriter.flush()确保数据完全写入。

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

java生成的File文件总是0kb,附上源代码:

    ...
    FileWriter fw = new FileWriter(f2);
    BufferedWriter bw = new BufferedWriter(fw); 											 
    String str = null;
    while ((str = br.readLine()) != null) {
    		bw.write(str);
    	    bw.newLine();
    }  
    bw.flush();
    ...

仔细排查后发现,原来是fw没有flush,在bw.flush();后面加上fw.flush();后问题解决。

### 计算Java生成的图片文件大小 为了计算在Java生成的图片文件大小,通常的方法是先将图像写入到`ByteArrayOutputStream`对象中,然后再通过该流获取字节数组并测量其长度。这种方法适用于任何类型的二进制数据输出,包括但不限于图片文件。 下面是一个简单的例子来展示如何实现这一点: ```java import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; public class ImageSizeCalculator { public static long getImageFileSize(BufferedImage image, String formatName) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { // Write the buffered image to a byte array using specified format (e.g., "png", "jpg") ImageIO.write(image, formatName, baos); // Flush any remaining bytes and close the stream baos.flush(); // Convert the output stream into a byte array byte[] imageInByte = baos.toByteArray(); // Get size of the file in bytes return imageInByte.length; } finally { // Close resources after use baos.close(); } } } ``` 上述代码定义了一个名为`getImageFileSize`的方法,接受一个`BufferedImage`实例以及指定保存格式名称作为参数,并返回代表文件大小的一个整数值(单位为字节)。这里使用了`ImageIO.write()`函数把图像转换成特定格式的数据流[^2]。 值得注意的是,在处理非常大的图像时可能会遇到内存不足的问题。如果预计要操作较大的文件,建议采用分块读取的方式或将临时文件存储于磁盘上来避免占用过多RAM资源[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端之道

如果帮助到你,可以请作者喝杯茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值