<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java文件操作詳解

    輸入輸出流?
    在Java中,我們把能夠讀取一個字節序列的對象稱作一個輸入流;而我們把夠寫一個字節序列稱作一個輸出流。它們分別由抽象類?
    InputStream和OutputStream類表示。因為面向字節的流不方便用來處理存儲為Unicode(每個字符使用兩個字節)的信息。所以Java?
    引入了用來處理Unicode字符的類層次,這些類派生自抽象類Reader和Writer,它們用于讀寫雙字節的Unicode字符,而不是單字節字符。?
    Java.io包簡介?
    JDK標準幫助文檔是這樣解釋Java.io包的,通過數據流、序列和文件系統為系統提供輸入輸出。?
    InputStream類和OutputStream類?
    InputStream類是所有輸入數據流的父類,它是一個抽象類,定義了所有輸入數據流都具有的共通特性。?
    java.io.InputStream的方法如下:?
    public?abstract?read()throws?IOException?
    讀取一個字節并返回該字節,如果到輸入源的末則返回-1。一個具體的輸入流類需要重載此方法,以提供?有用的功能。例如:在FileInputStream類中,該方法從一個文件讀取一個字節。?
    public?int?read(byte[]?b)throws?IOException?
    把數據讀入到一個字節數據中,并返回實際讀取的字節數目。如果遇到流末?則返回-1,該方法最多讀取b.length個字節。?
    public?abstract?int?read(byte[]?b,int?off,int?len)throws?IOException?
    把數據讀入到一個字節數組中并返回實際讀取的字節數目。如果遇到流的末尾則的返回-1。?其中參數off表示第一個字節在b中的位置,len表示讀取的最大字節數。?
    public?long?skip(long?n)throws?IOException?
    略過N個字節不讀取,會返回實際略過的字節數目。因為數據流中剩下的數據可能不到N?個字節那么多,所以此時返回值會小于N。?
    public?int?available()throws?IOException?
    read方法(包括后面要講的OutputStream類的Write方法)都能夠陰塞一個線程,直到字節被?實際讀取或寫入。這意味著如果一個流不能立即被讀或被寫?
    /*?
    *?Created?on?2005-3-10?
    *?To?change?the?template?for?this?generated?file?go?to?
    *?Window>Preferences>Java>Code?Generation>Code?and?Comments?
    */?

    import?java.io.BufferedReader;?
    import?java.io.File;?
    import?java.io.FileReader;?
    import?java.io.FileWriter;?
    import?java.io.IOException;?
    import?java.io.PrintWriter;?
    import?java.io.FileInputStream;;?
    /**?
    *?@author?zhangqinglin?
    *?To?change?the?template?for?this?generated?type?comment?go?to?
    *?Window>Preferences>Java>Code?Generation>Code?and?Comments?
    */?
    public?class?Files?
    {?
    public?static?void?main(String[]?args)?throws?IOException?
    {?
    Files?f?=?new?Files();?
    //?System.out.println(f.readFile("f:\\LinkFile.java"));?
    f.fileIsNull("D:\\java\\","ejb");?
    //f.readLineFile("D:\\java\\","TestFile.txt");?
    //?System.out.println(f.fileIsNull("f:\\","122.txt"));?
    //f.readFolderByFile("F:\\Login");?//不區分大小寫
    //?System.out.println(f.createAndDeleteFolder("ss","f:\\"));?
    //?System.out.println(f.createAndDeleteFile("f:\\ss\\","TestFile.dat"));?
    //f.createAndDeleteFolder("1","D:\\java\\");
    String[]?ss?=?new?String[50];?//定義對象數組
    for(int?i=0;i<ss.length;i++)?
    {?
    ss?=?"信息技術和互聯網(計算機軟硬件,通訊)?"+i;?
    }?
    f.writeFile("D:\\java\\","TestFile.txt",ss);?

    }?
    /**?
    *?文件的寫入?
    *?@param?filePath(文件路徑)?
    *?@param?fileName(文件名)?
    *?@param?args[]?
    *?@throws?IOException?
    */?
    public?void?writeFile(String?filePath,String?fileName,String[]?args)?throws?IOException?
    {?
    FileWriter?fw?=?new?FileWriter(filePath+fileName);?
    PrintWriter?out=new?PrintWriter(fw);?
    for(int?i=0;i<args.length;i++)?
    {?
    out.write(args);?
    out.println();?
    //out.flush();?
    }
    System.out.println("寫入成功!");?
    fw.close();?
    out.close();?
    }?
    /**?
    *?文件的寫入?
    *?@param?filePath(文件路徑)?
    *?@param?fileName(文件名)?
    *?@param?args?
    *?@throws?IOException?
    */?
    public?void?writeFile(String?filePath,String?fileName,String?args)?throws?IOException?
    {?
    FileWriter?fw?=?new?FileWriter(filePath+fileName);?
    fw.write(args);?
    fw.close();?
    }?
    /**?
    *?創建與刪除文件?
    *?@param?filePath?
    *?@param?fileName?
    *?@return?創建成功返回true?
    *?@throws?IOException?
    */?
    public?boolean?createAndDeleteFile(String?filePath,String?fileName)?throws?IOException?
    {?
    boolean?result?=?false;?
    File?file?=?new?File(filePath,fileName);?
    if(file.exists()){
    if(file.isFile())?
    {?
    file.delete();?
    result?=?true;?
    System.out.println("文件已經刪除!");?
    }?
    else?
    {
    ???System.out.println("對不起,該路徑為目錄!");?
    ???
    }
    }
    else?
    {?
    file.createNewFile();?//jdk5.0的新方法
    result?=?true;?
    System.out.println("文件已經創建!");?
    }?
    return?result;?
    }?
    /**?
    *?創建和刪除目錄?
    *?@param?folderName?
    *?@param?filePath?
    *?@return?刪除成功返回true?
    */?
    public?boolean?createAndDeleteFolder(String?folderName,String?filePath)?
    {?
    boolean?result?=?false;?
    try?
    {?
    File?file?=?new?File(filePath+folderName);?
    if(file.exists())?
    {?
    if(file.isDirectory()){
    file.delete();?
    System.out.println("目錄已經存在,已刪除!");?
    result?=?true;?
    }
    else{
    System.out.println("對不起,該路徑為文件!");?
    }
    }?
    else?
    {?
    file.mkdir();?
    System.out.println("目錄不存在,已經建立!");?
    result?=?true;?
    }?
    }?
    catch(Exception?ex)?
    {?
    result?=?false;?
    System.out.println("CreateAndDeleteFolder?is?error:"+ex);?
    }?
    return?result;?
    }?
    /**?
    *?輸出目錄中的所有文件及目錄名字?
    *?@param?filePath?
    */?
    public?void?readFolderByFile(String?filePath)
    {?
    File?file?=?new?File(filePath);?
    File[]?tempFile?=?file.listFiles();?
    for(int?i?=?0;i<tempFile.length;i++)?
    {?
    if(tempFile.isFile())?
    {?
    System.out.println("File?:?"+tempFile.getName());?
    }?
    if(tempFile.isDirectory())?
    {?
    System.out.println("Directory?:?"+tempFile.getName());?
    }?
    }?
    }?
    /**?
    *?檢查文件中是否為一個空?
    *?@param?filePath?
    *?@param?fileName?
    *?@return?為空返回true?
    *?@throws?IOException?
    */?
    public?boolean?fileIsNull(String?filePath,String?fileName)?throws?IOException?
    {?
    boolean?result?=?false;?
    FileReader?fr?=?new?FileReader(filePath+fileName);?
    if(fr.read()?==?-1)?
    {?
    result?=?true;?
    System.out.println(fileName+"?文件中沒有數據!");?
    }?
    else?
    {?
    System.out.println(fileName+"?文件中有數據!");?
    }?
    fr.close();?
    return?result;?
    }?
    /**?
    *?讀取文件中的所有內容?
    *?@param?filePath?
    *?@param?fileName?
    *?@throws?IOException?
    */?
    public?void?readAllFile(String?filePath,String?fileName)?throws?IOException?
    {?
    FileReader?fr?=?new?FileReader(filePath+fileName);?
    //PrintWriter?pr=new?PrintWriter(fr);
    //pr.print
    int?count?=?fr.read();?
    while(count?!=?-1)?
    {?
    System.out.print((char)count);?
    count?=?fr.read();?
    //System.out.println();
    if(count?==?13)?
    {?
    fr.skip(1);?
    System.out.print("跳過!");?
    }
    }?
    System.out.println();?
    fr.close();?
    }?
    /**?
    *?一行一行的讀取文件中的數據?
    *?@param?filePath?
    *?@param?fileName?
    *?@throws?IOException?
    */?
    public?void?readLineFile(String?filePath,String?fileName)?throws?IOException?
    {?
    FileReader?fr?=?new?FileReader(filePath+fileName);?
    BufferedReader?br?=?new?BufferedReader(fr);?
    String?line?=?br.readLine();?
    while(line?!=?null)?
    {?
    System.out.println(line);?
    line?=?br.readLine();?
    }?
    br.close();?
    fr.close();?
    }
    }


    /***************************以下是常用的文件操作方法******************************/

    /**?
    ???? *? @see 新建目錄?
    ???? *? @param? folderPath? String? 如? c:/fqf?
    ???? *? @return? boolean?
    ???? */?
    ?? public? void? newFolder(String? folderPath)?
    {?
    ?????? try? {?
    ?????????? String? filePath? =? folderPath;?
    ?????????? filePath? =? filePath.toString();?
    ?????????? java.io.File? myFilePath? =? new? java.io.File(filePath);?
    ?????????? if? (!myFilePath.exists())??
    ????????????{?
    ?????????????? myFilePath.mkdir();?
    ?????????? }?
    ?????? }?
    ?????? catch? (Exception? e)?
    ???????{?
    ?????????? System.out.println("新建目錄操作出錯");?
    ?????????? e.printStackTrace();?
    ?????? }?
    ?? }?
    ?
    ?? /**?
    ???? *? @see 新建文件?
    ???? *? @param? filePathAndName? String? 文件路徑及名稱? 如c:/fqf.txt?
    ???? *? @param? fileContent? String? 文件內容?
    ???? *? @return? boolean?
    ???? */?
    ?? public? void? newFile(String? filePathAndName,? String? fileContent)? {?
    ?
    ?????? try? {?
    ?????????? String? filePath? =? filePathAndName;?
    ?????????? filePath? =? filePath.toString();?
    ?????????? File? myFilePath? =? new? File(filePath);?
    ?????????? if? (!myFilePath.exists())? {?
    ?????????????? myFilePath.createNewFile();?
    ?????????? }?
    ?????????? FileWriter? resultFile? =? new? FileWriter(myFilePath);?
    ?????????? PrintWriter? myFile? =? new? PrintWriter(resultFile);?
    ?????????? String? strContent? =? fileContent;?
    ?????????? myFile.println(strContent);?
    ?????????? resultFile.close();?
    ?
    ?????? }?
    ?????? catch? (Exception? e)? {?
    ?????????? System.out.println("新建文件操作出錯");?
    ?????????? e.printStackTrace();?
    ?
    ?????? }?
    ?
    ?? }?
    ?
    ?? /**?
    ???? *? @see 刪除文件?
    ???? *? @param? filePathAndName? String? 文件路徑及名稱? 如c:/fqf.txt?
    ???? *? @param? fileContent? String?
    ???? *? @return? boolean?
    ???? */?
    ?? public? void? delFile(String? filePathAndName)? {?
    ?????? try? {?
    ?????????? String? filePath? =? filePathAndName;?
    ?????????? filePath? =? filePath.toString();?
    ?????????? java.io.File? myDelFile? =? new? java.io.File(filePath);?
    ?????????? myDelFile.delete();?
    ?????????? System.out.println(myDelFile + "\\文件存在,已刪除。");
    ?
    ?????? }?
    ?????? catch? (Exception? e)? {?
    ?????????? System.out.println("刪除文件操作出錯");?
    ?????????? e.printStackTrace();?
    ?
    ?????? }?
    ?
    ?? }?
    ?
    ?? /**?
    ???? *? @see 刪除文件夾?
    ???? *? @param? filePathAndName? String? 文件夾路徑及名稱? 如c:/fqf?
    ???? *? @param? fileContent? String?
    ???? *? @return? boolean?
    ???? */?
    ?? public? void? delFolder(String? folderPath)? {?
    ?????? try? {?
    ?????????? delAllFile(folderPath);? //刪除完里面所有內容?
    ?????????? String? filePath? =? folderPath;?
    ?????????? filePath? =? filePath.toString();?
    ?????????? java.io.File? myFilePath? =? new? java.io.File(filePath);?
    ?????????? myFilePath.delete();? //刪除空文件夾?
    ?
    ?????? }?
    ?????? catch? (Exception? e)? {?
    ?????????? System.out.println("刪除文件夾操作出錯");?
    ?????????? e.printStackTrace();?
    ?
    ?????? }?
    ?
    ?? }?
    ?
    ?? /**?
    ???? *? @see 刪除文件夾里面的所有文件?
    ???? *? @param? path? String? 文件夾路徑? 如? c:/fqf?
    ???? */?
    ?? public? void? delAllFile(String? path)? {?
    ?????? File? file? =? new? File(path);?
    ?????? if? (!file.exists())? {?
    ?????????? return;?
    ?????? }?
    ?????? if? (!file.isDirectory())? {?
    ?????????? return;?
    ?????? }?
    ?????? String[]? tempList? =? file.list();?
    ?????? File? temp? =? null;?
    ?????? for? (int? i? =? 0;? i? <? tempList.length;? i++)? {?
    ?????????? if? (path.endsWith(File.separator))? {?
    ?????????????? temp? =? new? File(path? +? tempList[i]);?
    ?????????? }?
    ?????????? else? {?
    ?????????????? temp? =? new? File(path? +? File.separator? +? tempList[i]);?
    ?????????? }?
    ?????????? if? (temp.isFile())? {?
    ?????????????? temp.delete();?
    ?????????? }?
    ?????????? if? (temp.isDirectory())? {?
    ?????????????? delAllFile(path+"/"+? tempList[i]);//先刪除文件夾里面的文件?
    ?????????????? delFolder(path+"/"+? tempList[i]);//再刪除空文件夾?
    ?????????? }?
    ?????? }?
    ?? }?
    ?
    ?? /**?
    ???? *? @see 復制單個文件?
    ???? *? @param? oldPath? String? 原文件路徑? 如:c:/fqf.txt?
    ???? *? @param? newPath? String? 復制后路徑? 如:f:/fqf.txt?
    ???? *? @return? boolean?
    ???? */?
    ?? public? void? copyFile(String? oldPath,? String? newPath)? {?
    ?????? try? {?
    ?????????? int? bytesum? =? 0;?
    ?????????? int? byteread? =? 0;?
    ?????????? File? oldfile? =? new? File(oldPath);?
    ?????????? if? (oldfile.exists())? {? //文件存在時?
    ?????????????? InputStream? inStream? =? new? FileInputStream(oldPath);? //讀入原文件?
    ?????????????? FileOutputStream? fs? =? new? FileOutputStream(newPath);?
    ?????????????? byte[]? buffer? =? new? byte[1444];?
    ?????????????? //int? length = 0;?
    ?????????????? while? (? (byteread? =? inStream.read(buffer))? !=? -1)? {?
    ?????????????????? bytesum? +=? byteread;? //字節數? 文件大小?
    ?????????????????? System.out.println(bytesum);?
    ?????????????????? fs.write(buffer,? 0,? byteread);?
    ?????????????? }?
    ?????????????? inStream.close();?
    ?????????? }?
    ?????? }?
    ?????? catch? (Exception? e)? {?
    ?????????? System.out.println("復制單個文件操作出錯");?
    ?????????? e.printStackTrace();?
    ?
    ?????? }?
    ?
    ?? }?
    ?
    ?? /**?
    ???? *? @see 復制整個文件夾內容?
    ???? *? @param? oldPath? String? 原文件路徑? 如:c:/fqf?
    ???? *? @param? newPath? String? 復制后路徑? 如:f:/fqf/ff?
    ???? *? @return? boolean?
    ???? */?
    ?? public? void? copyFolder(String? oldPath,? String? newPath)? {?
    ?
    ?????? try? {?
    ?????????? (new? File(newPath)).mkdirs();? //如果文件夾不存在? 則建立新文件夾?
    ?????????? File? a=new? File(oldPath);?
    ?????????? String[]? file=a.list();?
    ?????????? File? temp=null;?
    ?????????? for? (int? i? =? 0;? i? <? file.length;? i++)? {?
    ?????????????? if(oldPath.endsWith(File.separator)){?
    ?????????????????? temp=new? File(oldPath+file[i]);?
    ?????????????? }?
    ?????????????? else{?
    ?????????????????? temp=new? File(oldPath+File.separator+file[i]);?
    ?????????????? }?
    ?
    ?????????????? if(temp.isFile()){?
    ?????????????????? FileInputStream? input? =? new? FileInputStream(temp);?
    ?????????????????? FileOutputStream? output? =? new? FileOutputStream(newPath? +? "/"? +?
    ?????????????????????????? (temp.getName()).toString());?
    ?????????????????? byte[]? b? =? new? byte[1024? *? 5];?
    ?????????????????? int? len;?
    ?????????????????? while? (? (len? =? input.read(b))? !=? -1)? {?
    ?????????????????????? output.write(b,? 0,? len);?
    ?????????????????? }?
    ?????????????????? output.flush();?
    ?????????????????? output.close();?
    ?????????????????? input.close();?
    ?????????????? }?
    ?????????????? if(temp.isDirectory()){//如果是子文件夾?
    ?????????????????? copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);?
    ?????????????? }?
    ?????????? }?
    ?????? }?
    ?????? catch? (Exception? e)? {?
    ?????????? System.out.println("復制整個文件夾內容操作出錯");?
    ?????????? e.printStackTrace();?
    ?
    ?????? }?
    ?
    ?? }?
    ?
    ?? /**?
    ???? *? @see 移動文件到指定目錄?
    ???? *? @param? oldPath? String? 如:c:/fqf.txt?
    ???? *? @param? newPath? String? 如:d:/fqf.txt?
    ???? */?
    ?? public? void? moveFile(String? oldPath,? String? newPath)? {?
    ?????? copyFile(oldPath,? newPath);?
    ?????? delFile(oldPath);?
    ?
    ?? }?
    ?
    ?? /**?
    ???? *? 移動文件到指定目錄?
    ???? *? @param? oldPath? String? 如:c:/fqf.txt?
    ???? *? @param? newPath? String? 如:d:/fqf.txt?
    ???? */?
    ?? public? void? moveFolder(String? oldPath,? String? newPath)? {?
    ?????? copyFolder(oldPath,? newPath);?
    ?????? delFolder(oldPath);?
    ?
    ?? }?
    ??
    ?? /**?
    ??? * @see 獲得系統根目錄絕對路徑?
    ??? * @return String?
    ??? *???
    ??? */
    ?? public String getPath(){

    ? String sysPath = this.getClass().getResource("/").getPath();
    ???? //對路徑進行修改
    ? sysPath = sysPath.substring(1, sysPath.length() - 16);
    ? return? sysPath;
    ???
    ?? }



    posted on 2006-08-04 09:23 nbt 閱讀(1470) 評論(3)  編輯  收藏 所屬分類: Java2SE相關

    評論

    # re: Java文件操作詳解 2006-12-06 16:01 1

    1  回復  更多評論   

    # re: Java文件操作詳解 2006-12-06 16:02 1

    泵盔啊   回復  更多評論   

    # re: Java文件操作詳解 2006-12-06 16:02 1

    2  回復  更多評論   

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    Java技術網站

    友情鏈接

    國內一些開源網站

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久精品亚洲一区二区三区浴池| 日韩免费观看的一级毛片| 久久久久一级精品亚洲国产成人综合AV区 | 亚洲AV成人无码久久WWW| 我想看一级毛片免费的| 亚洲中文字幕乱码一区| 天天摸天天操免费播放小视频| 亚洲videos| 日韩中文无码有码免费视频 | 美女视频黄频a免费| 国产在线不卡免费播放| 一级女人18片毛片免费视频 | 亚洲区日韩区无码区| 精品人妻系列无码人妻免费视频| 亚洲国产日韩成人综合天堂 | 亚洲成av人片天堂网| 日本高清在线免费| 亚洲综合色丁香婷婷六月图片 | 四虎www免费人成| 高h视频在线免费观看| 亚洲永久无码3D动漫一区| 精品一区二区三区免费| 亚洲最大免费视频网| 国产色爽女小说免费看| 国产精品综合专区中文字幕免费播放| 亚洲色婷婷综合久久| 久久免费福利视频| 亚洲精华国产精华精华液网站| 亚洲国产免费综合| 无码国产精品一区二区免费3p| 亚洲一区二区三区四区视频| 免费a级毛片永久免费| 免费无码又爽又刺激网站直播| 18gay台湾男同亚洲男同| 免费观看男人免费桶女人视频| 一级毛片完整版免费播放一区| 久久久久亚洲Av片无码v| 精品久久洲久久久久护士免费 | 亚洲区精品久久一区二区三区| 国产男女猛烈无遮档免费视频网站| 国产免费高清69式视频在线观看|