java文件操作大全
http://andyone.iteye.com/blog/316990
一.獲得控制臺用戶輸入的信息
/**獲得控制臺用戶輸入的信息
???? * @return
???? * @throws IOException
???? */
???? public String getInputMessage() throws IOException{
??????? System.out.println("請輸入您的命令∶");
??????? byte buffer[]=new byte[1024];
??????? int count=System.in.read(buffer);
??????? char[] ch=new char[count-2];//最后兩位為結(jié)束符,刪去不要
??????? for(int i=0;i<count-2;i++)
??????????? ch[i]=(char)buffer[i];
??????????? String str=new String(ch);
??????????? return str;
??? }/** */...
?
可以返回用戶輸入的信息,不足之處在于不支持中文輸入,有待進(jìn)一步改進(jìn)。
?
二.復(fù)制文件
?
1.以文件流的方式復(fù)制文件
/**以文件流的方式復(fù)制文件
???? * @param src 文件源目錄
???? * @param dest 文件目的目錄
???? * @throws IOException?
???? */
???? public void copyFile(String src,String dest) throws IOException{
??????? FileInputStream in=new FileInputStream(src);
??????? File file=new File(dest);
??????? if(!file.exists())
??????????? file.createNewFile();
??????? FileOutputStream out=new FileOutputStream(file);
??????? int c;
??????? byte buffer[]=new byte[1024];
??????? while((c=in.read(buffer))!=-1)...{
??????????? for(int i=0;i<c;i++)
??????????????? out.write(buffer[i]);???????
?
??????????? }
??????? in.close();
??????? out.close();
??? }/** */...
?
該方法經(jīng)過測試,支持中文處理,并且可以復(fù)制多種類型,比如txt,xml,jpg,doc等多種格式
?
三.寫文件
?
1.利用PrintStream寫文件
/**
???? * 文件輸出示例
???? */
??? public void PrintStreamDemo(){
??????? try ...{
??????????? FileOutputStream out=new FileOutputStream("D:/test.txt");
??????????? PrintStream p=new PrintStream(out);
??????????? for(int i=0;i<10;i++)
??????????????? p.println("This is "+i+" line");
??????? } catch (FileNotFoundException e) ...{
??????????? e.printStackTrace();
??????? }
??? }/** */...
?
2.利用StringBuffer寫文件
public void StringBufferDemo() throws IOException...{
??????? File file=new File("/root/sms.log");
??????? if(!file.exists())
??????????? file.createNewFile();
??????? FileOutputStream out=new FileOutputStream(file,true);??????
???????? for(int i=0;i<10000;i++)......{
??????????? StringBuffer sb=new StringBuffer();
??????????? sb.append("這是第"+i+"行:前面介紹的各種方法都不關(guān)用,為什么總是奇怪的問題 ");
??????????? out.write(sb.toString().getBytes("utf-8"));
??????? }???????
??????? out.close();
??? }...
?
該方法可以設(shè)定使用何種編碼,有效解決中文問題。
?
四.文件重命名
?
?
??? /**文件重命名
???? * @param path 文件目錄
???? * @param oldname? 原來的文件名
???? * @param newname 新文件名
???? */
??? public void renameFile(String path,String oldname,String newname){
??????? if(!oldname.equals(newname))...{//新的文件名和以前文件名不同時,才有必要進(jìn)行重命名
??????????? File oldfile=new File(path+"/"+oldname);
??????????? File newfile=new File(path+"/"+newname);
??????????? if(newfile.exists())//若在該目錄下已經(jīng)有一個文件和新文件名相同,則不允許重命名
??????????????? System.out.println(newname+"已經(jīng)存在!");
??????????? else...{
??????????????? oldfile.renameTo(newfile);
??????????? }
??????? }????????
??? }/** */...
五.轉(zhuǎn)移文件目錄
?
?
?
轉(zhuǎn)移文件目錄不等同于復(fù)制文件,復(fù)制文件是復(fù)制后兩個目錄都存在該文件,而轉(zhuǎn)移文件目錄則是轉(zhuǎn)移后,只有新目錄中存在該文件。
??? /**轉(zhuǎn)移文件目錄
???? * @param filename 文件名
???? * @param oldpath 舊目錄
?? ??* @param newpath 新目錄
???? * @param cover 若新目錄下存在和轉(zhuǎn)移文件具有相同文件名的文件時,是否覆蓋新目錄下文件,cover=true將會覆蓋原文件,否則不操作
???? */
???? public void changeDirectory(String filename,String oldpath,String newpath,boolean cover){???????? if(!oldpath.equals(newpath))...{
????????? ??File oldfile=new File(oldpath+"/"+filename);
??????????? File newfile=new File(newpath+"/"+filename);
??????????? if(newfile.exists())...{//若在待轉(zhuǎn)移目錄下,已經(jīng)存在待轉(zhuǎn)移文件
??????????????? if(cover)//覆蓋
??????????????????? oldfile.renameTo(newfile);
??????????????? else
??????????????????? System.out.println("在新目錄下已經(jīng)存在:"+filename);
??????????? }
??????????? else...{
??????????????? oldfile.renameTo(newfile);
??????????? }
??????? }??????
??? }/** */...
?
?
?
六.讀文件
?
1.利用FileInputStream讀取文件
?
??? /**讀文件
???? * @param path
???? * @return
???? * @throws IOException
???? */
??? public String FileInputStreamDemo(String path) throws IOException{
??????? File file=new File(path);
??????? if(!file.exists()||file.isDirectory())
??????????? throw new FileNotFoundException();
?????? ?FileInputStream fis=new FileInputStream(file);
??????? byte[] buf = new byte[1024];
??????? StringBuffer sb=new StringBuffer();
??????? while((fis.read(buf))!=-1)...{
??????????? sb.append(new String(buf));???
??????????? buf=new byte[1024];//重新生成,避免和上次讀取的數(shù)據(jù)重復(fù)
??????? }
??????? return sb.toString();
??? }/** */...
?
?
?
2.利用BufferedReader讀取
?
在IO操作,利用BufferedReader和BufferedWriter效率會更高一點
??? /**讀文件
???? * @param path
???? * @return
???? * @throws IOException
???? */
??? public String BufferedReaderDemo(String path) throws IOException{
??????? File file=new File(path);
??????? if(!file.exists()||file.isDirectory())
??????????? throw new FileNotFoundException();
??????? BufferedReader br=new BufferedReader(new FileReader(file));
??????? String temp=null;
??????? StringBuffer sb=new StringBuffer();
??????? temp=br.readLine();
??????? while(temp!=null)...{
??????????? sb.append(temp+" ");
??????????? temp=br.readLine();
??????? }
??????? return sb.toString();
??? }/** */...
?
?
?
3.利用dom4j讀取xml文件
??? /**從目錄中讀取xml文件
???? * @param path 文件目錄
???? * @return
???? * @throws DocumentException
???? * @throws IOException
???? */
??? public Document readXml(String path) throws DocumentException, IOException{???????? File file=new File(path);
??????? BufferedReader bufferedreader = new BufferedReader(new FileReader(file));???????? SAXReader saxreader = new SAXReader();
??????? Document document = (Document)saxreader.read(bufferedreader);
??????? bufferedreader.close();
??????? return document;
??? }/** */...
?
?
七.創(chuàng)建文件(文件夾)
1.創(chuàng)建文件夾
?/**創(chuàng)建文件夾
???? * @param path? 目錄
???? */
??? public void createDir(String path){
??????? File dir=new File(path);
??????? if(!dir.exists())
??????????? dir.mkdir();
??? }/** */...
2.創(chuàng)建新文件
/**創(chuàng)建新文件
???? * @param path 目錄
???? * @param filename 文件名
???? * @throws IOException
???? */
??? public void createFile(String path,String filename) throws IOException{???????? File file=new File(path+"/"+filename);
??????? if(!file.exists())
??????????? file.createNewFile();
??? }/** */...
八.刪除文件(目錄) 1.刪除文件
??? /**刪除文件
???? * @param path 目錄
???? * @param filename 文件名
???? */
??? public void delFile(String path,String filename){
??????? File file=new File(path+"/"+filename);
??????? if(file.exists()&&file.isFile())
??????????? file.delete();
??? }/** */...
2.刪除目錄 要利用File類的delete()方法刪除目錄時,必須保證該目錄下沒有文件或者子目錄,否則刪除失敗,因此在實際應(yīng)用中,我們要刪除目錄,必須利用遞歸刪除該目錄下的所有子目錄和文件,然后再刪除該目錄。
?/**遞歸刪除文件夾
???? * @param path
?
總結(jié)
以上是生活随笔為你收集整理的java文件操作大全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux里查看所有用户和用户组
- 下一篇: java操作LINUX上文件,设置权限问