Java技能点–通过OutputStream写入文件与文件复制

Java技能点–通过OutputStream写入文件与文件复制一 知识点 1 首先不管是 InputStream 读 read 还是 OutputStream 写 write 都支持读写一定长度的 byte 2 当然 还支持一个字节一个字节的读写 那么一个字节一个字节的读写 读出来的字节和写入的字节都是用的 int 类型的参数 3 int 参数只会使用它的 8 个二进制位 也就是说类似于将 int 强行转换为 byte 我感觉很无聊的设计 还不如直接用 byte 作为参数 这样搞是因为 int

点此查看全部文字教程、视频教程、源代码

1. 知识点

1,首先不管是InputStream读read,还是OutputStream写write,都支持读写一定长度的byte[]。

2,当然,还支持一个字节一个字节的读写,那么一个字节一个字节的读写,读出来的字节和写入的字节都是用的int类型的参数。

3,int参数只会使用它的8个二进制位,也就是说类似于将int强行转换为byte,我感觉很无聊的设计,还不如直接用byte作为参数,这样搞是因为int太火吗?

4,所以所谓的复制,就是把所有的字节读出来,然后写入文件即可。

2. 写入文件示例

写入对象FILE_FOR_WRITE中

//工具类 package com.maoge.stream; import java.io.File; public class StreamUtils { 
    //用于定义每次读取的长度 public static final int BUFFER_LENGTH=512; //文件对象 public static File FILE_FOR_READ; public static File FILE_FOR_WRITE; static{ 
    FILE_FOR_READ=new File("C:\\test.txt"); FILE_FOR_WRITE=new File("C:\\result.txt"); } } 

写入过程

package com.maoge.stream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class OutputStreamDemo { 
    public static void main(String[] args){ 
    writeToFile(); } public static void writeToFile(){ 
    byte buffer[]=buffer=new String("hello world!").getBytes(); OutputStream out=null; try { 
    out = new FileOutputStream(StreamUtils.FILE_FOR_WRITE); out.write(buffer, 0, buffer.length); } catch (Exception ex) { 
    System.out.println(ex.toString()); }finally{ 
    try { 
    out.close(); } catch (IOException ioEx) { 
    System.out.println(ioEx.toString()); } } } } 

3. 文件复制示例

直接演示复制图片,因为图片也是二进制位组成的

源文件test.jpg这个需要找个图片,目的文件result.jpg这个是复制后生产的

//工具类 package com.maoge.stream; import java.io.File; public class StreamUtils { 
    //用于定义每次读取的长度 public static final int BUFFER_LENGTH=512; //文件对象 public static File FILE_FOR_READ; public static File FILE_FOR_WRITE; static{ 
    FILE_FOR_READ=new File("C:\\test.jpg"); FILE_FOR_WRITE=new File("C:\\result.jpg"); } } 

复制过程,该方法是OutputStreamDemo类的静态方法。

public static void fileCopy(){ 
    FileInputStream in=null; FileOutputStream out=null; try { 
    in=new FileInputStream(StreamUtils.FILE_FOR_READ); out=new FileOutputStream(StreamUtils.FILE_FOR_WRITE); int c; while((c=in.read())!=-1) out.write(c); } catch (Exception ex) { 
    System.out.println(ex.toString()); }finally{ 
    try { 
    in.close(); } catch (IOException ioEx) { 
    System.out.println(ioEx.toString()); } try { 
    out.close(); } catch (IOException ioEx) { 
    System.out.println(ioEx.toString()); } } } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2026年3月17日 下午10:28
下一篇 2026年3月17日 下午10:28


相关推荐

  • 驾驭绿色存储的三驾马车

    驾驭绿色存储的三驾马车

    2021年7月28日
    69
  • Step by Step WCF—Transactions

    Step by Step WCF—Transactions

    2021年7月26日
    84
  • ldd 命令介绍_ldr指令是什么意思

    ldd 命令介绍_ldr指令是什么意思1.在制作自己的发行版时经常需要判断某条命令需要哪些共享库文件的支持,以确保指定的命令在独立的系统内可以可靠的运行;在Linux环境下通过ldd命令即可实现,在终端下执行:ldd/bin/ls//ldd命令通常使用”-v”或”–verbose”选项来显示所依赖的动态连接库的尽可能的详细信息。即可得到/bin/ls命令的相关共享库文件列表:libtermcap.so.2=>/lib/lib

    2022年5月3日
    70
  • PLSQLDeveloper14连接Oracle11g

    PLSQLDeveloper14连接Oracle11g提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、环境配置1.安装PLSQLDeveloper142.下载并解压Oracle客户端3.配置window操作系统环境变量二、工具配置1.Oracle客户端配置2.PLSQLDeveloper14配置3.重启PLSQLDeveloper14客户端结尾一、环境配置1.安装PLSQLDeveloper14官网自行下载,不详细阐述2.下载并解压Oracle客户端例如版本:instantclient-basic-nt-19.8.0

    2022年5月22日
    41
  • 机器学习中的流形学习算法 Manifold Learning

    机器学习中的流形学习算法 Manifold Learning机器学习中的流形学习方法 ISOMAP LLE LaplacianEig SNE t SNE

    2026年3月17日
    2
  • ASP.NET_.NET

    ASP.NET_.NET我们在《ASP.NETCore项目实战的课程》第一章里面给identityserver4做了一个全面的介绍和示例的练习。如果想完全理解本文所涉及到的话题,你需要了解的背景知识有:什么是OpenIdConnect(OIDC)OIDC对oAuth进行了哪些扩展?IdentityServer4提供的OIDC认证服务(服务端)ASP.NETCore的权限体系中的OIDC认证框架(客户端)什

    2022年10月20日
    2

发表回复

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

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