大家在Java开发中都会遇到文件复制的文件,众所周知,需要通过文件输入输出流实现。

那究竟该怎么做那,话不多说,直接上代码:

一,使用字节流复制文件

public class FileByteCopy {
public static void main(String[] args) {

FileByteCopy f= new FileByteCopy();
try {
f.copy("d:/File/1.txt","d:/CopyFile/1.txt");

} catch (Exception e) {
e.printStackTrace();
}

}
public void copy(String f1,String f2) throws Exception{
FileInputStream fis = new FileInputStream(f1); //首先构建输入流的对象,指定需要读取的文件路径 
FileOutputStream fos = new FileOutputStream(f2,false); //构建文件输出流的对象,即将文件复制在哪里去,后面的true代表每次写入时不清空当前文件内容

//方法一,单字节复制
// int value = fis.read(); / //一个字节一个字节的读取文件的内容 
// while(value!=-1){
// fos.write(value);
// fos.flush();
// value = fis.read();
// }

//方法二  以字节数组为单位传递 (一次传递一个大小自定义的数组)
byte [] bytes = new byte[1024];
int len=fis.read(bytes); //把读取的字节存入到字节数组中  此时的len为文件中的大小,注意不一定是1024。下图中的95字节即为对应的源文件的len值

while(len!=-1){
// fos.write(bytes); //使用这种方法,如果源文件大小不是1024,,复制后的文件也会是1024。因为一次读取的最小的都是1024,详细见下图。

复制前

复制后

fos.write(bytes, 0, len); //从偏移量0开始到len(95)写入字符,可以保证源文件和复制后的文件大小一致。
fos.flush();
len=fis.read(bytes);
}
//读取完毕后关闭流
fis.close();
fos.close();
}
}

二,使用字符流复制文件(与字节流同理)

public class FileCharCopy {
public static void main(String[] args) {
FileCharCopy f = new FileCharCopy();
try {
f.copy("d:/File/1.txt","d:/CopyFile/1.txt"); 

} catch (Exception e) {
e.printStackTrace();
}
}

public void copy(String f1,String f2) throws Exception{
FileReader fr = new FileReader(f1);
FileWriter fw =new FileWriter(f2,false);
//int value=fr.read();
//while(value!=-1){
//fw.write(value);
//fw.flush();
//value=fr.read();
//}
 char [] chars = new char[1024];
 int len =fr.read(chars);
 while(len!=-1){
 fw.write(chars, 0, len);
 fw.flush();
 len =fr.read(chars);
 }

 fr.close();
 fw.close();
}

 

java使用字节流和字符流实现文件复制的更多相关文章

  1. Java中字节流和字符流复制文件

    字节流和字符流复制文件的过程: 1.建立两个流对象 绑定数据源和目的地 2.遍历出需复制的文件写入复制过后的新文件中(只不过是遍历的时候是区分字节和字符的) 3.访问结束后关闭资源 字节流复制文件: ...

  2. java中字节流与字符流的区别

    字节流 在I/O类库中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,它们都是抽象类,不能实例化,数据流中的最小单位是字节,所以叫做字 ...

  3. JAVA IO 字节流与字符流

    文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节.     ...

  4. Java中字节流和字符流的比较(转)

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操 ...

  5. java 21 - 4 字符流的文件复制操作以及简化

    既然字节流可以复制文件,那么字符流当然也有. 同样的思路: 数据源: a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader目的地: b.txt -- 写出数据 -- ...

  6. java中字节流和字符流的区别

    流分类: 1.Java的字节流   InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先.2.Java的字符流  Reader是所有读取字符串输入流的祖先,而 ...

  7. Java IO 字节流与字符流 (五)

    Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字 ...

  8. Java IO 字节流与字符流 (三)

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  9. Java IO 字节流与字符流 (二)

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

随机推荐

  1. Java单线程文件下载,支持断点续传功能

    前言: 程序下载文件时,有时会因为各种各样的原因下载中断,对于小文件来说影响不大,可以快速重新下载,但是下载大文件时,就会耗费很长时间,所以断点续传功能对于大文件很有必要. 文件下载的断点续传: 1. ...

  2. Android 性能测试——Heap Viewer 工具

    Android 性能测试--Heap Viewer 工具 Heap Viewer能做什么? 实时查看App分配的内存大小和空闲内存大小 发现Memory Leaks Heap Viewer使用条件 5 ...

  3. echarts_部分图表配置_堆叠折线图

    echarts基本图表使用: 1.获取包裹元素(var myChart = echarts.init(document.getElementById('thisId'));)2.设置option(op ...

  4. 在同一个sql语句中,统计不同条件的Count数量

    前几天帮同事优化了个SQL,原写法使用多个子查询这里不再重现了,大家都遇到过这样一种情况,在项目后期的维护中, 修改别人的SQL代码,超过30行的语句,多层子查询,读起来很坑,时间久的项目伴随着人员的 ...

  5. nopcommerce数据库字典

    http://www.xcode.me/open/document/nopcommercedatadict.html

  6. 化工厂装箱员 洛谷 p2530

    题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...

  7. this和super关键字在构造器中放置第一行的原因

    this()在第一行的原因就是: 为保证父类对象初始化的唯一性. 我们假设一种情况, 类B是类A的子类, 如果this()可以在构造函数的任意行使用, 那么会出现什么情况呢? 首先程序运行到构造函数B ...

  8. oracle 11gR2 RAC安装手册

    --oracle 11gR2 RAC安装手册 -----------------------------2013/10/29 参考三思笔记 http://files.cnblogs.com/jackh ...

  9. 从FMDB到WCDB、微信团队怎么说?

    WCDB背景 自己初次见到WCDB是微信开发团队公众号在今年五月份推送的一篇文章中(开发者团队的微信号上面图片中有,值得大家关注一下),那时候就说在筹备着WCDB的开源,觉得很是新奇,在两个多月前WC ...

  10. Markdown转HTML/pdf格式

    Markdown转HTML/pdf格式 通过_github自带_的更新博客的网页: https://github.com/YOUR_GITHUB_ACCOUNT/YOUR_GITHUB_ACCOUNT ...