Java IO流

package 字节流;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class StreamDemo {
public static void main(String[] args) throws IOException {
copyFile1("E:\\VirtualBox-4.3.12-93733-Win.exe", "VirtualBox-4.3.12-93733-Win.exe");
copyFile2("E:\\VirtualBox-4.3.12-93733-Win.exe", "VirtualBox-4.3.12-93733-Win.exe");
copyFile6("E:\\VirtualBox-4.3.12-93733-Win.exe", "VirtualBox-4.3.12-93733-Win.exe");

}


/*
* @author Mr Zhang

* @parama Inputfile Outputfile

* @function 复制文件通过一个一个字节
*/
public static void copyFile1(String filename1, String filename2) throws IOException {
File file = new File(filename1);
File Copyfile = new File(filename2);
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(Copyfile);
int by;
long start=System.currentTimeMillis();
while ((by = fis.read()) != -1) {
fos.write(by);
}
long end=System.currentTimeMillis();
        System.out.println(end-start);
fis.close();
fos.close();
}


/*
* @author Mr Zhang

* @parama Inputfile Outputfile

* @function 复制文件字节数组复制文件,效率高
*/
public static void copyFile2(String filename1, String filename2) throws IOException {
File file = new File(filename1);
File Copyfile = new File(filename2);
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(Copyfile);
byte[] bys = new byte[1024];
int leng;
long start=System.currentTimeMillis();
while ((leng = fis.read(bys)) != -1) {
fos.write(bys, 0, leng);
}
long end=System.currentTimeMillis();
        System.out.println(end-start);
fis.close();
fos.close();
}


/*
* @author Mr Zhang

* @parama Inputfile Outputfile

* @function 字符流复制文件
*/
public static void copyFile3(String filename1, String filename2) throws IOException {
File file = new File(filename1);
File Copyfile = new File(filename2);
FileReader fr = new FileReader(file);
FileWriter fw = new FileWriter(Copyfile);
int by;
long start=System.currentTimeMillis();
while ((by = fr.read()) != -1) {
fw.write(by);
}
long end=System.currentTimeMillis();
        System.out.println(end-start);
fr.close();
fw.close();
}


/*
* @author Mr Zhang

* @parama Inputfile Outputfile

* @function 字符流复制文件
*/
public static void copyFile4(String filename1, String filename2) throws IOException {
File file = new File(filename1);
File Copyfile = new File(filename2);
FileReader fr = new FileReader(file);
FileWriter fw = new FileWriter(Copyfile);
char[] chs = new char[1024];
int leng;
long start=System.currentTimeMillis();
while ((leng = fr.read(chs)) != -1) {
fw.write(chs, 0, leng);
}
long end=System.currentTimeMillis();
        System.out.println(end-start);
fr.close();
fw.close();
}


public static void copyFile5(String filename1, String filename2) throws IOException {
File file = new File(filename1);
File Copyfile = new File(filename2);
BufferedReader br= new BufferedReader(  new FileReader(file));
BufferedWriter bw= new BufferedWriter(new FileWriter(Copyfile));
String line=null;
long start=System.currentTimeMillis();
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
}
long end=System.currentTimeMillis();
        System.out.println(end-start);
bw.close();
br.close();
}

public static void copyFile6(String filename1, String filename2) throws IOException {
File file = new File(filename1);
File Copyfile = new File(filename2);
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos= new BufferedOutputStream(new FileOutputStream(Copyfile));
int leng;

byte [] bys=new byte[1024];
long start=System.currentTimeMillis();
while((leng=bis.read(bys))!=-1) {
bos.write(bys, 0, leng);
}
long end=System.currentTimeMillis();
        System.out.println(end-start);
bis.close();
bos.close();
}

}


为什么使用转换流:

这是因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取。网络传输来的字符。







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值