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

}

 

posted @ 2012-10-19 11:01  邹晟  阅读(261)  评论(0编辑  收藏  举报