Io流
package io; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; /* * 字节流与字符流之间的转换 * * 有的时候字节流要转为字符流,如何处理 * * */ public class Byte2Unicode { public static void main(String[] args) { //接收键盘输入,System.in提供了输入功能,但是是字节输入,键盘无法输入 InputStream is = System.in; //所以要转成字符 Reader r = new InputStreamReader(is);//使用InputStreamReader将字节输入流转为字符输入流 BufferedReader br = new BufferedReader(r); try { //将用户输入的内容加入到文件中的方法 FileWriter fw = new FileWriter("c:/1.txt",true);//以前的内容不想被删,true追加文件 BufferedWriter bw = new BufferedWriter(fw); String str = null; str = br.readLine();//等待输入 //System.out.println("你从键盘入的是:"+str); bw.write(str);//写入到文件 bw.close(); fw.close(); br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }//就可以接收键盘的输入了 } }
package io; import java.io.*; public class CopyByteFile { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { File file = new File("c:/restrant_Data.MDF"); //确定源文件 FileInputStream fis = new FileInputStream(file);//产生一个通道,专门运送file(源文件),源文件放在通道中了 FileOutputStream fos = new FileOutputStream(new File("c:\\Users\\a.mdf"));//送到目的地的流,如果目标存在,就覆盖,不存在就创建 System.out.println("文件开始复制....."); long start = System.currentTimeMillis(); int i = fis.read();//从源文件中读取一个字节 while(i != -1){ fos.write(i); //通过输出流输出到目的文件 i = fis.read(); } fos.close(); //关闭通道 fis.close(); System.out.println("文件复制完成!!!共花费"+(System.currentTimeMillis()-start)+"ms"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package io; import java.io.*; public class CopyByteFileByBuffer { /** * 字节流是一切流的祖先, * 字符流是对字流的拓展,本质讲还是字节流,只不过字符流相对字节流来说,每次多读了点字节 * 任何文件都可以用字节流传送 * * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { //File file = new File("c:/restrant_Data.MDF"); //确定源文件 //FileInputStream fis = new FileInputStream(file);//产生一个通道,专门运送file(源文件),源文件放在通道中了 FileInputStream fis = new FileInputStream("c:/restrant_Data.MDF"); BufferedInputStream bis = new BufferedInputStream(fis);//带缓冲的 FileOutputStream fos = new FileOutputStream(new File("c:\\Users\\a.mdf"));//送到目的地的流,如果目标存在,就覆盖,不存在就创建 BufferedOutputStream bos = new BufferedOutputStream(fos);//带缓冲的 System.out.println("文件开始复制....."); long start = System.currentTimeMillis(); int i = bis.read(); while(i != -1){ bos.write(i); i = bis.read(); } bos.close(); fos.close(); bis.close(); fis.close(); System.out.println("文件复制完成!!!共花费"+(System.currentTimeMillis()-start)+"ms"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package io; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* * * 字符传送 * * */ public class CopyUniCodeFile { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { //字符传送时理论上以一个字符为传送单位,即两个字节,表面上比字节流传送要快 //读入内存 FileReader fr = new FileReader("c:/permission.sql"); //加缓冲 BufferedReader br = new BufferedReader(fr); //写入硬盘 FileWriter fw = new FileWriter("c:/Users/permission.sql"); BufferedWriter bw = new BufferedWriter(fw); //读写文件 String str = br.readLine(); while(str != null){ bw.write(str); //写入到硬盘 bw.newLine();//换行 str = br.readLine();//继续读 } bw.close(); fw.close(); br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }