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(); } }