2009年6月24日

網路程式設計 - 期末考偷偷來 ( File I / O )

相關連結 http://caterpillar.onlyfun.net/Gossip/JavaGossip-V2/JavaGossip2.htm http://home.so-net.net.tw/idealist/Java/IO.html
package onlyfun.caterpillar;
 
import java.io.*;
import java.util.*;
 
public class FileDemo {
    public static void main(String[] args) {
        try { 
            String name = "FileDemo.java";//讀取的檔案或目錄
            File file = new File(name);
            if(file.isFile()) { // 是否為檔案
                System.out.println(name + " 檔案"); 
                System.out.println(
                      file.canRead() ? "可讀 " : "不可讀 "); 
                System.out.println(
                      file.canWrite() ? "可寫 " : "不可寫 "); 
                System.out.println(
                      file.length() + "位元組"); 
                /****************************************************/
                try {    
                    //讀取檔案
                    FileReader fis = new FileReader(name);
                    BufferedReader brdFile = new BufferedReader(fis);
                    //寫入檔案
                    FileWriter fOut = new FileWriter("c.txt");
                    BufferedWriter bwrFile = new BufferedWriter(fOut);
                    
                    //一行一行讀取並儲存 
                    int n = 0;
                    String strLine;
                    String str = "";
                    while ((strLine = brdFile.readLine()) != null) {
                        
                        str += (n++) + strLine + "\n";
                        
                    }
                    
                    //將字串一行一行寫入
                    String s = "";
                    for(int x = 0 ; x < str.length(); x++){
                        
                        if(str.charAt(x) != '\n'){
                            s += str.charAt(x);
                        }else{
                            bwrFile.write(s);//寫入一行
                            bwrFile.newLine();//換行
                            s = "";//字串重新儲存
                        }
                    }
                    
                    
                    System.out.println(str);
                    
                    //關閉檔案
                    brdFile.close();
                    bwrFile.close();
                    fOut.close();
                    fis.close();
                }catch (IOException e) {}
                /****************************************************/
            } 
            else { 
                // 列出所有的檔案及目錄
                File[] files = file.listFiles(); 
                ArrayList fileList = 
                                    new ArrayList(); 
                for(int i = 0; i < files.length; i++) { 
                    // 先列出目錄 
                    if(files[i].isDirectory()) { //是否為目錄
                        // 取得路徑名
                        System.out.println("[" + 
                                files[i].getPath() + "]"); 
                    }
                    else {
                        // 檔案先存入fileList,待會再列出
                        fileList.add(files[i]); 
                    }
                } 
 
                // 列出檔案 
                for(File f: fileList) {
                    System.out.println(f.toString());
                }
                System.out.println(); 
            } 
        } 
        catch(ArrayIndexOutOfBoundsException e) { 
            System.out.println(
                        "using: java FileDemo pathname"); 
        } 
    }
}

沒有留言: