Java學習筆記之I/O

不知為何就叫呵呵發表於2016-08-19
package com.chinasofti.javase20160819;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class IoTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] arr=readFile("D:\\MyFT\\demo\\javase20160819\\src\\com\\chinasofti\\javase20160819\\test.txt");
        for(int v:arr)
            System.out.print((char)v);
        
        writeFile("D:\\MyFT\\demo\\javase20160819\\src\\com\\chinasofti\\javase20160819\\test1.txt",arr);
        
        String str = "affjaisfi和還是滴啊會是個";
        writeFile("D:\\MyFT\\demo\\javase20160819\\src\\com\\chinasofti\\javase20160819\\test1.txt",str);
    }
    /**
     * 讀檔案,返回int[],檔案中的字元的編碼
     * @param panth
     */
    private static int[] readFile(String panth){
        File dir=new File(panth);
        FileInputStream fil=null;
        InputStreamReader inStr=null;
        BufferedReader buffR=null;
        int length = (int)dir.length();
        int[] arr = new int[length];
        try {
            fil = new FileInputStream(dir);
            inStr =new InputStreamReader(fil,"GBK");//中轉流,把位元組流轉換成字元流
            buffR = new BufferedReader(inStr);        
            arr=readAll(buffR,length);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(buffR != null){
                try {
                    buffR.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(inStr != null){
                try {
                    inStr.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(fil != null){
                try {
                    fil.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return arr;
    }
    
    /**
     * 讀取檔案中的所有字元,以int[]型別返回
     * @param buffR
     * @param length 檔案長度,可以用File物件的length()方法得到
     * @return
     */
    private static int[] readAll(BufferedReader buffR,int length){
        int index=0;
        int[] arr=new int[length];
        while(index<length){
            try {
                arr[index]=buffR.read();
                index++;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return arr;
    }
    
    /**
     * 寫入檔案
     * @param panth
     * @param arr :需要寫入字元的int型別編碼
     */
    private static void writeFile(String panth,int[] arr){
        File dir=new File(panth);
        /*
         * 判斷檔案是否存在
         */
        if(!dir.exists()){
            try {
                dir.createNewFile();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        FileWriter fil=null;
        BufferedWriter buffW=null;
            try {
                fil=new FileWriter(dir);
                buffW=new BufferedWriter(fil);
                writeAll(buffW,arr);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                if(buffW != null){
                    try {
                        buffW.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(fil != null){
                    try {
                        fil.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            
    }
    
    /**
     * 寫入檔案
     * @param panth
     * @param string :需要寫入檔案的字串
     */
    private static void writeFile(String panth,String string){
        File dir=new File(panth);
        /*
         * 判斷檔案是否存在
         */
        if(!dir.exists()){
            try {
                dir.createNewFile();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        FileWriter fil=null;
        BufferedWriter buffW=null;
        try {
            fil=new FileWriter(dir);
            buffW=new BufferedWriter(fil);
            buffW.write(string);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(buffW != null){
                try {
                    buffW.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(fil != null){
                try {
                    fil.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        
        /*char[] arr=string.toCharArray();
        for(char v:arr){
            
        }*/
    }
    
    /**
     * 全部寫入檔案
     * @param buffW
     * @param arr
     */
    private static void writeAll(BufferedWriter buffW,int[] arr){
        for(int i=0;i<arr.length;i++){
            try {
                buffW.write(arr[i]);
                if(arr[i] == 13)
                    buffW.write(10);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}

 

相關文章