java文件建立、刪除、讀取、寫入操做大全

本文系轉載:
原文地址:http://www.javashuo.com/article/p-yxpkepsa-eg.htmlhtml

一.得到控制檯用戶輸入的信息

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];//最後兩位爲結束符,刪去不要
     for(int i=0;i<count-2;i++)
         ch[i]=(char)buffer[i];
     String str=new String(ch);
     return str;
 }

能夠返回用戶輸入的信息,不足之處在於不支持中文輸入,有待進一步改進。java

二.複製文件

一、以文件流的方式複製文件app

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();
 }

該方法通過測試,支持中文處理,而且能夠複製多種類型,好比txt,xml,jpg,doc等多種格式dom

三.寫文件

一、利用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();
     }
 }

二、利用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+"行:前面介紹的各類方法都不關用,爲何老是奇怪的問題 ");
         out.write(sb.toString().getBytes("utf-8"));
     }        
     out.close();
}

該方法能夠設定使用何種編碼,有效解決中文問題。code

四.文件重命名

public void renameFile(String path,String oldname,String newname)...{
     if(!oldname.equals(newname))...{//新的文件名和之前文件名不一樣時,纔有必要進行重命名
         File oldfile=new File(path+"/"+oldname);
         File newfile=new File(path+"/"+newname);
         if(newfile.exists())//若在該目錄下已經有一個文件和新文件名相同,則不容許重命名
             System.out.println(newname+"已經存在!");
         else...{
             oldfile.renameTo(newfile);
         }
     }         
 }

五.轉移文件目錄

轉移文件目錄不等同於複製文件,複製文件是複製後兩個目錄都存在該文件,而轉移文件目錄則是轉移後,只有新目錄中存在該文件。xml

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())...{//若在待轉移目錄下,已經存在待轉移文件
             if(cover)//覆蓋
                 oldfile.renameTo(newfile);
             else
                 System.out.println("在新目錄下已經存在:"+filename);
         }
         else...{
             oldfile.renameTo(newfile);
         }
     }       
 }

六.讀文件

0、獲取文件後綴名htm

import java.io.File;

public class Test {
    public static void main(String[] args) {
        File file = new File("HelloWorld.java");
        String fileName = file.getName();
        String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
        System.out.println(suffix);
    }
}

一、利用FileInputStream讀取文件blog

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];//從新生成,避免和上次讀取的數據重複
     }
     return sb.toString();
 }

二、利用BufferedReader讀取

在IO操做,利用BufferedReader和BufferedWriter效率會更高一點

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();
 }

三、利用dom4j讀取xml文件

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;
 }

七.建立文件(文件夾)

一、建立文件夾

public void createDir(String path)...{
     File dir=new File(path);
     if(!dir.exists())
         dir.mkdir();
 }

二、建立新文件

public void createFile(String path,String filename) throws IOException...{
     File file=new File(path+"/"+filename);
     if(!file.exists())
         file.createNewFile();
 }

八.刪除文件(目錄)

一、刪除文件

public void delFile(String path,String filename)...{
     File file=new File(path+"/"+filename);
     if(file.exists()&&file.isFile())
         file.delete();
 }

二、刪除目錄
要利用File類的delete()方法刪除目錄時,必須保證該目錄下沒有文件或者子目錄,不然刪除失敗,所以在實際應用中,咱們要刪除目錄,必須利用遞歸刪除該目錄下的全部子目錄和文件,而後再刪除該目錄。

public void delDir(String path)...{
     File dir=new File(path);
     if(dir.exists())...{
         File[] tmp=dir.listFiles();
         for(int i=0;i<tmp.length;i++)...{
             if(tmp[i].isDirectory())...{
                 delDir(path+"/"+tmp[i].getName());
             }
             else...{
                 tmp[i].delete();
             }
         }
         dir.delete();
     }
 }
相關文章
相關標籤/搜索