JAVA IO 流小結

字節流(InputStream,OutputStream)

字符流(Writer,Reader)

如是要複製一個文件,這個文件是一個文本文件話,則可以採用字符流各字節流都可以,否則只能用字節流,字節流複製文件常用的四種方式,

/*
    方式一:一次讀一個字節
*
private static void Method1() throws IOException {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos  = new FileOutputStream("d:\\des.txt");

        int i = 0;
        while((i = fis.read()) != -1){
            fos.write(i);
        }

        fis.close();
        fos.close();
    }
/**
     * 方式二:一次讀寫一個字節數組
     * @throws Exception 
     */
    private static void Method2() throws Exception {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos  = new FileOutputStream("d:\\des.txt");

        byte bytes[] = new byte[1024];
        int len = 0;

        while((len = fis.read(bytes)) != -1){
            fos.write(bytes, 0, len);
        }
        fis.close();
        fos.close();
    }
/**方式三:
     * 使用BufferedInputStream和BufferedOutputStream  一次讀寫取一個字節
     * @throws Exception
     */
    private static void Method3() throws Exception {
        // TODO Auto-generated method stub
        File file  = new File("d:\\src.txt");
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\des.txt"));
        int i = 0;
        while((i=bis.read()) != -1){
            bos.write(i);
        }

        bos.flush();
        bis.close();
        bos.close();
    }
    /**
     * 方式四: 使用BufferedInputream 和 BufferedOutputStream 一次讀寫一個字節數組
     * @throws Exception
     */
    private static void Method4() throws Exception {
        // TODO Auto-generated method stub
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\des.txt"));
        int len = 0;
        byte bytes[] = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes,0,len);
        }

        bos.flush();
        bis.close();
        bos.close();
    }

以上就是字節流複製這件的四種方式


而使用字符流來複制這個文本文件的話,則有五種方式:


    /**
     * 方式一:使用FileRead 和 FileWriter 一次讀寫一個字符
     * @throws Exception
     */
    private static void Method1() throws Exception {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");

        FileWriter fw = new FileWriter("d:\\des.txt");
        FileReader fr = new FileReader(file);

        int i;
        while((i = fr.read()) != -1){
            fw.write(i);
        }
        fw.close();
        fr.close();
    }
    /**
     * 方式三使用 BufferedReader 和  BufferedWriter (緩存技術) 一次讀寫一個字符
     * @throws Exception
     */
    private static void Method3() throws Exception {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

        int i = 0;
        while((i = br.read()) != -1){
            bw.write(i);
        }
        bw.flush();
        br.close();
        bw.close();
    }
    /**
     * 方式四使用 BufferedReader 和  BufferedWriter (緩存技術) 一次讀寫一個字符數組
     * @throws Exception
     */
    private static void Method4() throws Exception {
        // TODO Auto-generated method stub

        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

        int len=0;
        char c[] = new char[1024];
        while((len = br.read(c)) != -1){
            bw.write(c, 0, len);
        }
        bw.flush();
        br.close();
        bw.close();
    }
    /**
     * 方式五使用 BufferedReader 和  BufferedWriter (緩存技術) 一次讀寫一行(以\r結末)數據
     * @throws Exception
     */
    private static void Method5() throws Exception {
        // TODO Auto-generated method stub
        File file = new File("d:\\src.txt");
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

        String str="";
        while((str = br.readLine()) != null){
            bw.write(str);;
            bw.newLine();
        }
        bw.flush();
        br.close();
        bw.close();

數據操作流:

DataInputStream /DataOutputStream


內存操作流:

ByteArrayInputStream

CharArrayInputStream

StringReader/StringWriter


和並流:
SequenceInputStream


序列化流:
ObjectInputStream


Properties

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章