java檔案相關操作

來源:互聯網
上載者:User

判斷Android檔案名稱是否安全技巧

public static boolean IsFileNameOK(String filepath) {
        return Pattern.compile("[\\w%+,./=_-]+").matcher(filepath).matches();
    }

   public static boolean IsFileNameOK(File file) {
        return Pattern.compile("[\\w%+,./=_-]+").matcher(file.getPath()).matches();
    }

一.獲得控制台使用者輸入的資訊

/** *//**獲得控制台使用者輸入的資訊

* @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];//最後兩位為結束符,刪去不要

for(int i=0;i<count-2;i++)

ch[i]=(char)buffer[i];

String str=new String(ch);

return str;

}

可以返回使用者輸入的資訊,不足之處在於不支援中文輸入,有待進一步改進。

二.複製檔案

1.以檔案流的方式複製檔案

/** *//**以檔案流的方式複製檔案

* @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();

}

該方法經過測試,支援中文處理,並且可以複製多種類型,比如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+"行:前面介紹的各種方法都不關用,為什麼總是奇怪的問題 ");

out.write(sb.toString().getBytes("utf-8"));

}

out.close();

}

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

四.檔案重新命名

/** *//**檔案重新命名

* @param path 檔案目錄

* @param oldname 原來的檔案名稱

* @param newname 新檔案名稱

*/

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

}

}

}

五.轉移檔案目錄

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

/** *//**轉移檔案目錄

* @param filename 檔案名稱

* @param oldpath 舊目錄

* @param newpath 新目錄

* @param cover 若新目錄下存在和轉移檔案具有相同檔案名稱的檔案時,是否覆蓋新目錄下檔案,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())...{//若在待轉移目錄下,已經存在待轉移檔案

if(cover)//覆蓋

oldfile.renameTo(newfile);

else

System.out.println("在新目錄下已經存在:"+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];//重建,避免和上次讀取的資料重複

}

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;

}

七.建立檔案(檔案夾)

1.建立檔案夾 /** *//**建立檔案夾

* @param path 目錄

*/

public void createDir(String path)...{

File dir=new File(path);

if(!dir.exists())

dir.mkdir();

}

2.建立新檔案 /** *//**建立新檔案

* @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()方法刪除目錄時,必須保證該目錄下沒有檔案或者子目錄,否則刪除失敗,因此在實際應用中,我們要刪除目錄,必須利用遞迴刪除該目錄下的所有子目錄和檔案,然後再刪除該目錄。 /** *//**遞迴刪除檔案夾

* @param path

*/

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

}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.