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();
}
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()用来读取。网络传输来的字符。