Java IO流操作
java IO流按种类分:有字节流和字符流,字节流可以操作任何数据,但字符流只能操作文本数据
下面是9中方式操作IO流
/*
请用9种方法复制文本文件
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
class Demo{
public static void main(String[] args) throws IOException{
File src1 = new File ("F:\\test\\music1.mp3");
File src2 = new File ("F:\\test\\music2.mp3");
File dst = new File ("F:\\test\\music3.mp3");
//method1(src,dst);
//method2(src,dst);
//method3(src,dst);
method4(src1,dst);
method4(src2,dst);
//method5(src,dst);
//method6(src,dst);
//method7(src,dst);
//method8(src,dst);
//method9(src,dst);
}
//方式1:利用普通字节流,一次读取一个字节
public static void method1(File src ,File dst) throws IOException{
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dst);
int b = 0;
while((b = fis.read()) != -1){
fos.write(b);
}
fis.close();
fos.close();
}
//方式2:利用普通字节流,一次读取一个字节数组
public static void method2(File src ,File dst) throws IOException{
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dst);
byte[] bys = new byte[1024];
int b = 0;
while((b = fis.read(bys)) != -1){
fos.write(bys,0,b);
}
fis.close();
fos.close();
}
//方式三:利用高效字节流,一次读取一个字节
public static void method3(File src ,File dst) throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dst));
int b = 0;
while((b = bis.read()) != -1){
bos.write(b);
}
bis.close();
bos.close();
}
//方式四:利用高效字节流,一次读取一个字节数组
public static void method4(File src ,File dst) throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dst,true));
byte[] bys = new byte[1024];
int b = 0;
while((b = bis.read(bys)) != -1){
bos.write(bys,0,b);
}
bis.close();
bos.close();
}
//方式五:利用普通字符流,一次读取一个字符
public static void method5(File src ,File dst) throws IOException{
FileReader fr = new FileReader(src);
FileWriter fw = new FileWriter(dst);
int b = 0;
while((b = fr.read()) != -1){
fw.write((char)b);
}
fr.close();
fw.close();
}
//方式六:利用普通字符流,一次读取一个字符数组
public static void method6(File src ,File dst) throws IOException{
FileReader fr = new FileReader(src);
FileWriter fw = new FileWriter(dst);
char[] chs = new char[1024];
int b = 0;
while((b = fr.read(chs)) != -1){
fw.write(chs,0,b);
}
fr.close();
fw.close();
}
//方式七:利用高效字符流,一次读取一个字符
public static void method7(File src ,File dst) throws IOException{
BufferedReader br = new BufferedReader(new FileReader(src));
BufferedWriter bw = new BufferedWriter(new FileWriter(dst));
int b = 0;
while((b = br.read()) != -1){
bw.write((char)b);
}
br.close();
bw.close();
}
//方式八:利用高效字符流,一次读取一个字符数组
public static void method8(File src ,File dst) throws IOException{
BufferedReader br = new BufferedReader(new FileReader(src));
BufferedWriter bw = new BufferedWriter(new FileWriter(dst));
char[] chs = new char[1024];
int b = 0;
while((b = br.read(chs)) != -1){
bw.write(chs,0,b);
}
br.close();
bw.close();
}
//方式九:利用高效字符流,一次读取一个字符串
public static void method9(File src ,File dst) throws IOException{
BufferedReader br = new BufferedReader(new FileReader(src));
BufferedWriter bw = new BufferedWriter(new FileWriter(dst));
String line = null;
while((line = br.readLine()) != null){
bw.write(line);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
}

浙公网安备 33010602011771号