/*【入】指的是到内存里,【出】指的是到内存外*/
import java.io.*; public class MyReadFile{
public static void main(String[] args){
try{
/*第一步,定位数据源&&目标文件*/
File f = new File("D:/lab_2/test.txt");
File f2 = new File("D:/lab_2/test2.txt"); /*第二步,建立输入&&输出管道*/
FileInputStream fis = new FileInputStream(f);
FileOutputStream fos = new FileOutputStream(f2); /*第三步,操作管道*/
for(;fis.available() > 0;)
fos.write(fis.read()); }catch(Exception e){}
}
}

由于是一个字节一个字节的读写,在文件稍微大一点的时候(大于1MB)时,速度会非常的慢。

稍作修改即可,每次1000个字节读写。

       byte[] tmp = new byte[1000];
for(;fis.available() > 0;)
fis.read(tmp);
fos.write(tmp);

据说2的n次方计算机处理效率会更快。

            byte[] tmp = new byte[8192];
for(;fis.available() > 0;)
fis.read(tmp);
fos.write(tmp);

最后是标准版。

/*第三步,操作管道*/
byte[] tmp = new byte[8192];
//处理大部分内容
int length = fis.available()/8192;
for(int i = 0; i < length; i ++){
fis.read(tmp);
fos.write(tmp);
}
//处理最后剩下的内容
int size = fis.read(tmp);
fos.write(tmp, 0, size);
/*
*/
import java.io.*;

public class MyReadFile{
public static void main(String[] args){
try{
/*定位数据源&&定位目标文件*/
File f = new File("D:/lab_2/test.txt");
File f_copy = new File("D:/lab_2/test2.txt"); /*建立将数据从硬盘输入到内存的管道
&&建立将数据从内存输出到硬盘的管道*/
FileInputStream fis = new FileInputStream(f);
FileOutputStream fos = new FileOutputStream(f_copy); /*操作管道---->传输数据*/
byte[] tmp = new byte[8192];
/*建立一个临时的array用于一次性大量读写,提高读写大文件的效率*/ /*********复制大部分数据******假设总共有8192+1024byte*****/ int length = fis.available()/8192; /*根据假设length = 1*/ /*这里除完后会有余数(长度小于8192),也就是会剩下一段数据读不到,
如果int length = fis.available()/8192 + 1;多读一次的话,
结果复制的文件会比源文件大,因为实际剩余的长度不足8192。*/ for(int i = 0; i < length; i ++){
fis.read(tmp);
fos.write(tmp);
} /*根据假设复制了8192byte*/ /**********复制剩下的数据**********根据假设还有1024byte***********/
int left_length = fis.available(); /*根据假设left_length = 1024*/ fis.read(tmp, 0, left_length);
fos.write(tmp, 0, left_length); /*根据假设复制了1024byte*/ }catch(Exception e){}
}
}

FileCopy的更多相关文章

  1. 实现FileCopy(Ring0 x86 x64)

    1.1 内核不接受一个字符串文件路径,必须填写一个OBJECT_ATTRIBUTES结构. 这个结构,在InitializeObjectAttributes初始化 typedef struct _OB ...

  2. 这个类复制文本文件FileCopy

    package JBJADV003; import java.io.File;import java.io.BufferedReader;import java.io.BufferedWriter;i ...

  3. FileCopy方法

    复制文件. 语法 FileCopy源,目标 FileCopy 语句语法包含以下命名参数: 部分 说明 source 必需. 指定要复制的文件的名称的字符串表达式. _源_可能包含目录或文件夹,和驱动器 ...

  4. FileCopy文件复制

    package cn.com.filecopy; import java.io.FileInputStream; import java.io.FileNotFoundException; impor ...

  5. Java实现本地 fileCopy

    前言: Java中流是重要的内容,基础的文件读写与拷贝知识点是很多面试的考点.故通过本文进行简单测试总结. 2.图展示[文本IO/二进制IO](这是参考自网上的一张总结图,相当经典,方便对比记忆) 3 ...

  6. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  7. 20个非常有用的Java程序片段

    下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...

  8. VB6与VB.NET对照表

    VB6与VB.NET对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1.It ...

  9. 将word文档A表格中的内容拷贝到word文档B表格中

    Function IsFileExists(ByVal strFileName As String) As Boolean ) <> Empty Then IsFileExists = T ...

随机推荐

  1. diff 文件比较

    测试数据: [xiluhua@vm-xiluhua][~]$ cat msn.txt aaa bbb bbb ccc ccc ddd bbb eee aaa ccc bbb sss [xiluhua@ ...

  2. PHP 设计模式之观察者模式

    现在有两派,有的人建议使用设计模式,有的人不建议使用设计模式!这就向写文章一样,有的人喜欢文章按照套路走,比如叙事性质的文章,时间,地点,人物,事件.而有的人喜欢写杂文或者散文,有的人喜欢写诗词! 现 ...

  3. Javascript中setTimeout()的用法详解

    1.SetTimeOut()       1.1 SetTimeOut()语法例子       1.2 用SetTimeOut()执行Function       1.3 SetTimeout()语法 ...

  4. main函数参数解析

    int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下:void main( ...

  5. (1)redis下载编译

    一.redis下载编译 这里没什么好说的 用的版本是redis-2.8.17 1)redis-server是可执行程序 2)mian函数在redis.c里面 3)如果要修改调试 这届在src目录下   ...

  6. 15款开源PHP类库

    PHP库给开发者提供了一个标准接口,它帮助开发者在PHP里充分利用面向对象编程.这些库为特定类型的内置功能提供了一个标准的API,允许类可以与PHP引擎进行无缝的交互.此外,开发者使用这些类库还可以简 ...

  7. shell控制流结构笔记

      man  test 可以看见这些     比较符号:-lt小于 -le小于等于   -gt大于   -ge大于等于  -ne不等于   -eq等于              < 小于(需要双 ...

  8. LAMMP架构的企业级应用

    LAMMP架构的企业级应用 ========================================= LAMMP是什么 LAMMP的实现 LAMMP适用的生产环境 ============= ...

  9. Python3基础 assert关键字 成功啥事没有,失败了就报错

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  10. Cacti中文版在Centos上的安装

    最近老有人问Cacti中文版在哪下载啊怎么安装啊,我在这里一遍给大家讲解了:Cacti中文版在Centos上的安装 1.基本安装 cacti是运作在apache+php+mysql+net-snmp工 ...