java stream 转 file_Java InputStream转File

java stream 转 file_Java InputStream转File文件处于磁盘上或者流处于内存中在输入流有已知的和预处理的数据时 如在硬盘上的文件或者在流处于内存中 这种情况下 不需要做边界校验 并且内存容量条件允许的话 可以简单的读取并一次写入 InputStreami newFileInput newFile src main resources sample txt byte buffer n

文件处于磁盘上或者流处于内存中 在输入流有已知的和预处理的数据时,如在硬盘上的文件或者在流处于内存中。这种情况下,不需要做边界校验,并且内存容量条件允许的话,可以简单的读取并一次写入。

InputStream initialStream = new FileInputStream(new File(“src/main/resources/sample.txt”));

byte[] buffer = new byte[initialStream.available()];

initialStream.read(buffer);

File targetFile = new File(“src/main/resources/targetFile.tmp”);

OutputStream outStream = new FileOutputStream(targetFile);

outStream.write(buffer);

基于Guava的实现

InputStream initialStream = new FileInputStream(new File(“src/main/resources/sample.txt”));

byte[] buffer = new byte[initialStream.available()];

initialStream.read(buffer);

File targetFile = new File(“src/main/resources/targetFile.tmp”);

Files.write(buffer, targetFile);

基于Commons IO的实现

InputStream initialStream = FileUtils.openInputStream(new File(“src/main/resources/sample.txt”));

File targetFile = new File(“src/main/resources/targetFile.tmp”);

FileUtils.copyInputStreamToFile(initialStream, targetFile);

输入流映射正在进行的数据流 如果输入流链接到正在进行的数据流上,如来自正在进行的链接的HTTP响应,此时可能无法一次读取整个流。这种情况下,我们需要确保一直读取到流的尽头。

File targetFile = new File(“src/main/resources/targetFile.tmp”);

try(InputStream initialStream = new FileInputStream(new File(“src/main/resources/sample.txt”));

OutputStream outStream = new FileOutputStream(targetFile)) {

byte[] buffer = new byte[8 * 1024];

int bytesRead;

while ((bytesRead = initialStream.read(buffer)) != -1) {

outStream.write(buffer, 0, bytesRead);

}

} catch (Exception e) {

e.printStackTrace();

}

另一种实现方式:

try (InputStream initialStream = new FileInputStream(new File(“src/main/resources/sample.txt”))) {

File targetFile = new File(“src/main/resources/targetFile.tmp”);

java.nio.file.Files.copy(

initialStream,

targetFile.toPath(),

StandardCopyOption.REPLACE_EXISTING);

} catch (Exception e) {

e.printStackTrace();

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206519.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:31
下一篇 2026年3月19日 下午3:31


相关推荐

  • 计算机三级-数据库技术

    计算机三级-数据库技术三级数据库技术知识点总结1数据字典是对系统种各类数据描述的集合,包括数据项,数据结构,数据流,数据存储和处理过程五个部分2数据模型的三要素:数据结构、数据操作和完整性约束3数据库系统:一般由数据库、操作系统、数据库管理系统(及其工具)、应用系统、数据库管理人员和用户构成4数据模型:数据模型是数据库系统的数学形式框架,是数据库系统的核心和基础5数据模型的分类:概念模型,也称信息…

    2022年6月18日
    51
  • 使用再生龙还原镜像文件到硬盘

    使用再生龙还原镜像文件到硬盘1 nbsp 把制作好的再生龙光盘插入需要的电脑 开机按 F4 使用再生龙启动 2 nbsp 选择默认的 Clonezailla nbsp live Default nbsp settings VGA nbsp 800 600 然后等待几分钟 nbsp 3 nbsp 选择语言 简体中文 nbsp 4 nbsp 选择不修改键盘映射 nbsp 5 nbsp 选择使用再生龙 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 6 nbsp 选择硬盘 分区 存到 来自 镜像文件 此选项既可以制作镜像 也可以恢复镜像 nbsp 7 nbsp 使用本机的分区 nbsp nbsp nbsp nbsp nbsp

    2026年3月18日
    2
  • 树莓派基于QT实现利用USB转485模块进行串口通讯「建议收藏」

    树莓派基于QT实现利用USB转485模块进行串口通讯「建议收藏」本文的QT版本为5.3.2,是树莓派可直接下载安装的QT版本,不用自己编译。树莓派为3B+。树莓派利用自带的硬件串口是3.3V的ttl电平,在做测试的时候会遇到很多485的设备,在使用232转485的模块遇到了一些乱码问题,所以准备直接利用USB转485模块插在树莓派的USB口上进行通讯。不过这个版本的QT没有Qserialport模块,需要安装,通过命令安装sudoapt-getinstal…

    2022年5月3日
    78
  • 闭包优缺点

    闭包优缺点闭包 能够读取其他函数内部变量的函数 应用场景 要获取某函数内部的局部变量 闭包的优点 1 能够读取函数内部的变量 2 让这些变量一直存在于内存中 不会在调用结束后 被垃圾回收机制回收闭包的缺点 正所谓物极必反 由于闭包会使函数中的变量保存在内存中 内存消耗很大 所以不能滥用闭包 解决办法是 退出函数之前 将不使用的局部变量删除

    2026年3月26日
    1
  • 《深入解析Hello,World》 :第三章 java源代码是怎样变成class文件的

    《深入解析Hello,World》 :第三章 java源代码是怎样变成class文件的javac实现原理编译器原理

    2022年5月27日
    26
  • java byte数组转String

    java byte数组转String假设 data 为字节数组 byteArray 需要将其转化为 string 字符串代码 System out println newString data UTF 8

    2026年3月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号