FileCopy
/*【入】指的是到内存里,【出】指的是到内存外*/
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的更多相关文章
- 实现FileCopy(Ring0 x86 x64)
1.1 内核不接受一个字符串文件路径,必须填写一个OBJECT_ATTRIBUTES结构. 这个结构,在InitializeObjectAttributes初始化 typedef struct _OB ...
- 这个类复制文本文件FileCopy
package JBJADV003; import java.io.File;import java.io.BufferedReader;import java.io.BufferedWriter;i ...
- FileCopy方法
复制文件. 语法 FileCopy源,目标 FileCopy 语句语法包含以下命名参数: 部分 说明 source 必需. 指定要复制的文件的名称的字符串表达式. _源_可能包含目录或文件夹,和驱动器 ...
- FileCopy文件复制
package cn.com.filecopy; import java.io.FileInputStream; import java.io.FileNotFoundException; impor ...
- Java实现本地 fileCopy
前言: Java中流是重要的内容,基础的文件读写与拷贝知识点是很多面试的考点.故通过本文进行简单测试总结. 2.图展示[文本IO/二进制IO](这是参考自网上的一张总结图,相当经典,方便对比记忆) 3 ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- 20个非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...
- VB6与VB.NET对照表
VB6与VB.NET对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1.It ...
- 将word文档A表格中的内容拷贝到word文档B表格中
Function IsFileExists(ByVal strFileName As String) As Boolean ) <> Empty Then IsFileExists = T ...
随机推荐
- org.apache.cxf.interceptor.Fault: No such operation
webservice错误,访问的时候加后缀wsdl即可,如:http://localhost:9000/HelloWorld?wsdl
- js词法作用域规则
function foo() {console.log( a ); // 2不是3} function bar() {var a = 3;foo();} var a = 2;bar(); js中的作用 ...
- c#作业
string a = this.textBox1.Text; // string [] b=a.Split("\r\n".ToCharArray(),StringSplitOpti ...
- Sequence 分类: 栈和队列 2015-08-05 10:10 2人阅读 评论(0) 收藏
Sequence Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 8277 Accepted: 2708 Description ...
- JAVA基础知识之网络编程——-基于NIO的非阻塞Socket通信
阻塞IO与非阻塞IO 通常情况下的Socket都是阻塞式的, 程序的输入输出都会让当前线程进入阻塞状态, 因此服务器需要为每一个客户端都创建一个线程. 从JAVA1.4开始引入了NIO API, NI ...
- linux下安装图片识别环境
升级python http://blog.csdn.net/jcjc918/article/details/11022345 安装MySQLdb sudo yum install MySQL-pyth ...
- 搭建spring+mybatis+struts2环境的配置文件
1.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=& ...
- 如何借助浏览器Console使用Js进行定位和操作元素
在进行Selenium自动化过程中,我们很难避免一些webdriver 很难定位到的一些元素(如:默认隐藏属性元素),那对于一些比较难定位到的元素,有什么好的解决办法? 其实我们都知道,Sel ...
- promise理解
每个操作都返回一样的promise对象,保证链式操作 每个链式都通过then方法 每个操作内部允许犯错,出了错误,统一由catch error处理 操作内部,也可以是一个操作链,通过reject或re ...
- iis 没目录文件
方法一: <system.webServer> <directoryBrowse enabled="true"/> </system.webServe ...