使用FileInputStream的available方法,导致读取的文件流为0

先看看源码

    @Override
    public int available() throws IOException {
        return IoBridge.available(fd);
    }

返回的是int型的值
看代码

HttpEntity streamEntity = new InputStreamEntity(fs,fs.available());

如果文件大小超过2G,则fs.available() 即为0,则这个streamEntity 根本没有东西
若有文件的url,用file类打开,通过length方法取得长度

HttpEntity streamEntity = new InputStreamEntity(fs,file.length());

问题解决~

可以按照以下步骤来实现: 1. 创建 FileInputStream 对象,用于读取文件内容。 2. 创建一个 byte 数组,用于存储读取到的文件内容。 3. 使用 FileInputStream 的 read 方法,将文件内容读取到 byte 数组中。 4. 对 byte 数组中的内容进行修改。 5. 创建 FileOutputStream 对象,用于将修改后的内容输出到文件。 6. 使用 FileOutputStream 的 write 方法,将修改后的内容写入到文件中。 7. 关闭 FileInputStreamFileOutputStream 对象。 以下是示例代码: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileModifyExample { public static void main(String[] args) { try { // 创建 FileInputStream 对象,用于读取文件内容 FileInputStream fis = new FileInputStream("example.txt"); // 创建一个 byte 数组,用于存储读取到的文件内容 byte[] data = new byte[fis.available()]; // 使用 FileInputStream 的 read 方法,将文件内容读取到 byte 数组中 fis.read(data); // 对 byte 数组中的内容进行修改 String content = new String(data); content = content.replaceAll("hello", "hi"); data = content.getBytes(); // 创建 FileOutputStream 对象,用于将修改后的内容输出到文件 FileOutputStream fos = new FileOutputStream("example.txt"); // 使用 FileOutputStream 的 write 方法,将修改后的内容写入到文件中 fos.write(data); // 关闭 FileInputStreamFileOutputStream 对象 fis.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 以上代码会将 example.txt 文件中的所有 "hello" 替换为 "hi"。注意,在实际应用中,可能需要处理文件编码、文件读取异常等情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值