前言:IO流主要分为两大类,分别是字节流与字符流

注意:

1、音频文件、图片、视频(范围广),就用字节流

2、只涉及到文本的,就用字符流

使用字节流复制文本内容(其他文件也可以)

代码如下:

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

public class CopyFile {

public static void main(String[] args) {

try{

File inFile=new File("src.txt"); //源文件

InputStream in=new FileInputStream(inFile); //文件输入流

File outFile=new File("tar.txt"); //目标文件

OutputStream out=new FileOutputStream(outFile); //文件输出流

byte[] buff=new byte[1024]; //创建缓冲区,分配1024个字节大小的内存给buff

int num=0;

while((num=in.read(buff))!=-1){ //判断每次读取的最大字节数是否为1024

out.write(buff,0,num);

// out.write(buff); //这样也可以,不过容易造成文件内容不正确

out.flush(); //刷新缓冲区

String s=new String(buff);

System.out.println("文件内容复制成功");

System.out.println("文件复制内容为\n"+s);

}

in.close(); //关闭输入流

out.close(); //关闭输出流

// inFile.delete(); //删除源文件

// outFile.renameTo(new File("reName.txt")); //输出文件重命名

}

catch(FileNotFoundException e){

e.printStackTrace(); //在命令行打印异常信息在程序中出错的位置及原因

}

catch(IOException e){

e.printStackTrace();

}

}

}

使用字符流复制文本内容(仅限文本文件)

代码如下:

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class CopyFile{

public static void main(String[] args) {

try{

File inFile=new File("D:/src.txt"); //源文件

FileReader fileReader=new FileReader(inFile); //读取文件字符流

BufferedReader bufferedReader=new BufferedReader(fileReader); //把读取到的字符流放入缓存

File outFile=new File("D:/tar.txt"); //目标文件

FileWriter fileWrite=new FileWriter(outFile); //写入字符流

BufferedWriter bufferedWriter=new BufferedWriter(fileWrite); //把要输入的字符流放入缓存

String s="";

String str = "";

while((s=bufferedReader.readLine())!=null){ //判断文件字符流是否读取完毕

bufferedWriter.write(s); //字符流缓存写入文件

bufferedWriter.newLine(); //按行读取,遇到换行符则换行

bufferedWriter.flush(); //刷新缓存

str+=s;

}

System.out.println("文件复制内容为\n"+str);

//关闭输入输出流

fileReader.close();bufferedReader.close();

fileWrite.close();bufferedWriter.close();

// inFile.delete(); //删除源文件

// outFile.renameTo(new File("reName.txt")); //输出文件重命名

}

catch(FileNotFoundException e){

e.printStackTrace(); //在命令行打印异常信息在程序中出错的位置及原因

}

catch(IOException e){

e.printStackTrace();

}

}

}

说明:

如果想以追加文件内容,而不是覆盖的方式来复制文本内容,则修改如下

OutputStream out=new FileOutputStream(outFile,true); //字节流

FileWriter fileWrite=new FileWriter(outFile,true); //字符流

如果要在字符流指定缓存区大小,则修改如下

BufferedWriter bufferedWriter=new BufferedWriter(fileWrite,1024);

java io 文件复制_实例讲述Java IO文件复制相关推荐

  1. java正则截取xml节点_实例讲述Java使用正则表达式截取重复出现的XML字符串功能...

    Java使用正则表达式截取重复出现的XML字符串功能示例 本文实例讲述了Java使用正则表达式截取重复出现的XML字符串功能.分享给大家供大家参考,具体如下: public static void m ...

  2. java自旋锁使用_实例讲解Java 自旋锁

    一直以来不是怎么清楚自旋锁,最近有点时间,好好的学习了一下: 所谓的自旋锁在我的理解就是多个线程在尝试获取锁的时候,其中一个线程获取锁之后,其他的线程都处在一直尝试获取锁的状态,不会阻塞!!!那么什么 ...

  3. java pdf添加图章_实例讲解Java处理PDF图章的方法

    图章(印章)是一种在合同.票据.公文等文件中表明法律效应.部门机关权威的重要指示物,常见于各种格式的文件.文档中.对于纸质文档可以手动盖章,但对于电子文档,则需要通过特定的方法来实现.本篇文档分享通过 ...

  4. java获取u盘_实例分享java监听u盘的方法

    package org.load.u; import java.io.File; import java.util.LinkedHashMap; import java.util.Map; // U盘 ...

  5. java thread exit方法_实例分析Java终止线程和stop()方法

    Java终止线程实例和stop()方法源码阅读 了解线程 概念 线程 是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 线程特点 拥有状态,表示线程的状态,同一时刻中,JVM中 ...

  6. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

    如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...

  7. flex java 上传下载_完整的Flex多文件上传实例

    客户端代码:fileUpload.xml-------------------------------------------------------------------------------- ...

  8. java服务器gc停顿_如何避免后台IO高负载造成的长时间JVM GC停顿(转)

    译者著:其实本文的中心意思非常简单,没有耐心的读者建议直接拉到最后看结论部分,有兴趣的读者可以详细阅读一下. 原文发表于Linkedin Engineering,作者 Zhenyun Zhuang是L ...

  9. java zip文件夹_如何使用java压缩文件夹成为zip包

    展开全部 在JDK中有一个zip工具类:java.util.zip    Provides classes for reading and writing the standard ZIP and G ...

最新文章

  1. STL中的lower_bound() 和 upper_bound()
  2. JavaScript实现浏览器菜单的一些功能
  3. Android大图片裁剪终极解决方案
  4. 此windows副本不是正版解决方法
  5. 等保2.0标准_信息安全技术标准与等保2.0
  6. 安装SQL Server 2005时,出现“SQL Server 服务无法启动。……”提示的解决方法
  7. 安装nodejs express框架时express命令行无效
  8. bootstrap模态框垂直居中显示
  9. matlab矩阵处理实验报告,matlab实验报告一二三
  10. html转换pdf中文失败,解决html导出pdf中文乱码问题的正确姿势
  11. 如何在ecshop订单中显示客户给商家的留言
  12. 秒懂VRRP协议原理及配置
  13. 解决QQ邮箱接收不到Stream邮件问题
  14. 东方财富 自动止损程序
  15. 使用虹软SDK实现离线人脸识别(局域网)
  16. Facebook新闻摘要算法是怎样的
  17. map初步(由ABBC---A2BC)
  18. Linux运行SQL文件
  19. 《阿凡达2》上映在即,3D渲染如何突破想象?
  20. 14.Adaptive AUTOSAR 架构-身份及访问管理(IAM)

热门文章

  1. js脚本 处理js注入
  2. 分析PoS的存币挖矿和币价格——如何设计PoS挖矿才有利于吸引用户?
  3. 我需要运行自己的节点吗?
  4. Android适配全面总结(二)
  5. 利用Attribute简化Unity框架IOC注入
  6. 经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)
  7. R的一些统计分析包工具
  8. Scala学习(八)练习
  9. 存储虚拟化大幅减少了宕机时间
  10. zabbix 4.0.3 use docker-compose deploy