一.獲得控制台使用者輸入的資訊
/** *//**獲得控制台使用者輸入的資訊<br /> * @return<br /> * @throws IOException<br /> */<br /> public String getInputMessage() throws IOException...{<br /> System.out.println("請輸入您的命令∶");<br /> byte buffer[]=new byte[1024];<br /> int count=System.in.read(buffer);<br /> char[] ch=new char[count-2];//最後兩位為結束符,刪去不要<br /> for(int i=0;i<count-2;i++)<br /> ch=(char)buffer;<br /> String str=new String(ch);<br /> return str;<br /> }<br />
可以返回使用者輸入的資訊,不足之處在於不支援中文輸入,有待進一步改進。
二.複製檔案
1.以檔案流的方式複製檔案
/** *//**以檔案流的方式複製檔案<br /> * @param src 檔案來源目錄<br /> * @param dest 檔案目的目錄<br /> * @throws IOException<br /> */<br /> public void copyFile(String src,String dest) throws IOException...{<br /> FileInputStream in=new FileInputStream(src);<br /> File file=new File(dest);<br /> if(!file.exists())<br /> file.createNewFile();<br /> FileOutputStream out=new FileOutputStream(file);<br /> int c;<br /> byte buffer[]=new byte[1024];<br /> while((c=in.read(buffer))!=-1)...{<br /> for(int i=0;i<c;i++)<br /> out.write(buffer);<br /> }<br /> in.close();<br /> out.close();<br /> }<br />
該方法經過測試,支援中文處理,並且可以複製多種類型,比如txt,xml,jpg,doc等多種格式
三.寫檔案
1.利用PrintStream寫檔案
/** *//**<br /> * 檔案輸出樣本<br /> */<br /> public void PrintStreamDemo()...{<br /> try ...{<br /> FileOutputStream out=new FileOutputStream("D:/test.txt");<br /> PrintStream p=new PrintStream(out);<br /> for(int i=0;i<10;i++)<br /> p.println("This is "+i+" line");<br /> } catch (FileNotFoundException e) ...{<br /> e.printStackTrace();<br /> }<br /> }<br /> 2.利用StringBuffer寫檔案<br />public void StringBufferDemo() throws IOException......{<br /> File file=new File("/root/sms.log");<br /> if(!file.exists())<br /> file.createNewFile();<br /> FileOutputStream out=new FileOutputStream(file,true);<br /> for(int i=0;i<10000;i++)......{<br /> StringBuffer sb=new StringBuffer();<br /> sb.append("這是第"+i+"行:前面介紹的各種方法都不關用,為什麼總是奇怪的問題 ");<br /> out.write(sb.toString().getBytes("utf-8"));<br /> }<br /> out.close();<br /> }<br />
該方法可以設定使用何種編碼,有效解決中文問題。
四.檔案重新命名
/** *//**檔案重新命名<br /> * @param path 檔案目錄<br /> * @param oldname 原來的檔案名稱<br /> * @param newname 新檔案名稱<br /> */<br /> public void renameFile(String path,String oldname,String newname)...{<br /> if(!oldname.equals(newname))...{//新的檔案名稱和以前檔案名稱不同時,才有必要進行重新命名<br /> File oldfile=new File(path+"/"+oldname);<br /> File newfile=new File(path+"/"+newname);<br /> if(newfile.exists())//若在該目錄下已經有一個檔案和新檔案名稱相同,則不允許重新命名<br /> System.out.println(newname+"已經存在!");<br /> else...{<br /> oldfile.renameTo(newfile);<br /> }<br /> }<br /> }<br />
五.轉移檔案目錄
轉移檔案目錄不等同於複製檔案,複製檔案是複製後兩個目錄都存在該檔案,而轉移檔案目錄則是轉移後,只有新目錄中存在該檔案。
/** *//**轉移檔案目錄<br /> * @param filename 檔案名稱<br /> * @param oldpath 舊目錄<br /> * @param newpath 新目錄<br /> * @param cover 若新目錄下存在和轉移檔案具有相同檔案名稱的檔案時,是否覆蓋新目錄下檔案,cover=true將會覆蓋原檔案,否則不操作<br /> */<br /> public void changeDirectory(String filename,String oldpath,String newpath,boolean cover)...{<br /> if(!oldpath.equals(newpath))...{<br /> File oldfile=new File(oldpath+"/"+filename);<br /> File newfile=new File(newpath+"/"+filename);<br /> if(newfile.exists())...{//若在待轉移目錄下,已經存在待轉移檔案<br /> if(cover)//覆蓋<br /> oldfile.renameTo(newfile);<br /> else<br /> System.out.println("在新目錄下已經存在:"+filename);<br /> }<br /> else...{<br /> oldfile.renameTo(newfile);<br /> }<br /> }<br /> }<br />
六.讀檔案
1.利用FileInputStream讀取檔案
/** *//**讀檔案<br /> * @param path<br /> * @return<br /> * @throws IOException<br /> */<br /> public String FileInputStreamDemo(String path) throws IOException...{<br /> File file=new File(path);<br /> if(!file.exists()||file.isDirectory())<br /> throw new FileNotFoundException();<br /> FileInputStream fis=new FileInputStream(file);<br /> byte[] buf = new byte[1024];<br /> StringBuffer sb=new StringBuffer();<br /> while((fis.read(buf))!=-1)...{<br /> sb.append(new String(buf));<br /> buf=new byte[1024];//重建,避免和上次讀取的資料重複<br /> }<br /> return sb.toString();<br /> }<br />
2.利用BufferedReader讀取
在IO操作,利用BufferedReader和BufferedWriter效率會更高一點
/** *//**讀檔案<br /> * @param path<br /> * @return<br /> * @throws IOException<br /> */<br /> public String BufferedReaderDemo(String path) throws IOException...{<br /> File file=new File(path);<br /> if(!file.exists()||file.isDirectory())<br /> throw new FileNotFoundException();<br /> BufferedReader br=new BufferedReader(new FileReader(file));<br /> String temp=null;<br /> StringBuffer sb=new StringBuffer();<br /> temp=br.readLine();<br /> while(temp!=null)...{<br /> sb.append(temp+" ");<br /> temp=br.readLine();<br /> }<br /> return sb.toString();<br /> }<br />
3.利用dom4j讀取xml檔案
/** *//**從目錄中讀取xml檔案<br /> * @param path 檔案目錄<br /> * @return<br /> * @throws DocumentException<br /> * @throws IOException<br /> */<br /> public Document readXml(String path) throws DocumentException, IOException...{<br /> File file=new File(path);<br /> BufferedReader bufferedreader = new BufferedReader(new FileReader(file));<br /> SAXReader saxreader = new SAXReader();<br /> Document document = (Document)saxreader.read(bufferedreader);<br /> bufferedreader.close();<br /> return document;<br /> }<br />
七.建立檔案(檔案夾)
1.建立檔案夾 /** *//**建立檔案夾
/** @param path 目錄<br /> */<br /> public void createDir(String path)...{<br /> File dir=new File(path);<br /> if(!dir.exists())<br /> dir.mkdir();<br /> }<br />
2.建立新檔案 /** *//**建立新檔案
/** @param path 目錄<br /> * @param filename 檔案名稱<br /> */<br /> public void delFile(String path,String filename)...{<br /> File file=new File(path+"/"+filename);<br /> if(file.exists()&&file.isFile())<br /> file.delete();<br /> }<br />
八.刪除檔案(目錄)
1.刪除檔案 /** *//**刪除檔案
/** @param path 目錄<br /> * @param filename 檔案名稱<br /> */<br /> public void delFile(String path,String filename)...{<br /> File file=new File(path+"/"+filename);<br /> if(file.exists()&&file.isFile())<br /> file.delete();<br /> }<br />
2.刪除目錄
要利用File類的delete()方法刪除目錄時,必須保證該目錄下沒有檔案或者子目錄,否則刪除失敗,因此在實際應用中,我們要刪除目錄,必須利用遞迴刪除該目錄下的所有子目錄和檔案,然後再刪除該目錄。 /** *//**遞迴刪除檔案夾
/** @param path<br /> */<br /> public void delDir(String path)...{<br /> File dir=new File(path);<br /> if(dir.exists())...{<br /> File[] tmp=dir.listFiles();<br /> for(int i=0;i<tmp.length;i++)...{<br /> if(tmp.isDirectory())...{<br /> delDir(path+"/"+tmp.getName());<br /> }<br /> else...{<br /> tmp.delete();<br /> }<br /> }<br /> dir.delete();<br /> }<br /> }<br />