天天看點

android的檔案操作

android的檔案操作要有權限:

view plaincopy to clipboardprint?

<uses-permission

android:name="android.permission.write_external_storage"></uses-permission> 

<uses-permission android:name="android.permission.write_external_storage"></uses-permission>

sd卡下的檔案操作:

1、判斷sd卡是否插入

environment.getexternalstoragestate().equals( 

        android.os.environment.media_mounted); 

environment.getexternalstoragestate().equals(

android.os.environment.media_mounted);

2、獲得sd卡根目錄:

file skroot = environment.getexternalstoragedirectory(); 

file skroot = environment.getexternalstoragedirectory();

私有目錄下的檔案操作:

1、獲得私有根目錄:

file fileroot = context.getfilesdir()+"//"; 

file fileroot = context.getfilesdir()+"//";

還未整理

檔案夾或檔案夾操作:

1、确定或獲得檔案夾和檔案路徑

a、獲得檔案或檔案夾的絕對路徑和相對路徑。差別

string path = file.getpath();//相對 

string path = file.getabsoultepath();//絕對 

string path = file.getpath();//相對

string path = file.getabsoultepath();//絕對

b 、獲得檔案或檔案夾的父目錄

string parentpath = file.getparent(); 

string parentpath = file.getparent();

c、獲得檔案或檔案夾的名稱:

string name = file.getname(); 

string name = file.getname();

2、建立檔案或檔案夾

file.mkdir(); //建立檔案夾 

file.createnewfile();//建立檔案 

file.mkdir(); //建立檔案夾

file.createnewfile();//建立檔案

3、判斷是檔案或檔案夾

file.isdirectory() 

file.isdirectory()

4、列出檔案夾下的所有檔案和檔案夾名

file[] files = file.listfiles(); 

file[] files = file.listfiles();

5、修改檔案夾和檔案名

file.renameto(dest); 

file.renameto(dest);

6、删除檔案夾或檔案

file.delete(); 

file.delete();

package otheri.common; 

import java.io.file; 

import java.io.fileinputstream; 

import java.io.fileoutputstream; 

import java.io.ioexception; 

import java.io.inputstream; 

import java.io.outputstream; 

import otheri.io.input; 

import otheri.io.output; 

import android.content.context; 

import android.os.environment; 

public class filehelper { 

    private context context; 

    private string sdpath; 

    private string filespath; 

    public filehelper(context context) { 

        this.context = context; 

        sdpath = environment.getexternalstoragedirectory().getpath() +

"//"; 

        filespath = this.context.getfilesdir().getpath() +

    } 

    /**

     * 在sd卡上建立檔案

     *

     * @throws ioexception

     */ 

    public file creatsdfile(string filename)

throws ioexception { 

        file file = new file(sdpath + filename); 

        file.createnewfile(); 

        return file; 

     * 删除sd卡上的檔案

     * @param filename

    public boolean delsdfile(string filename) { 

        if (file == null || !file.exists() || file.isdirectory()) 

            return

false; 

        file.delete(); 

        return true; 

     * 在sd卡上建立目錄

     * @param dirname

    public file creatsddir(string dirname) { 

        file dir = new file(sdpath + dirname); 

        dir.mkdir(); 

        return dir; 

     * 删除sd卡上的目錄

    public boolean delsddir(string dirname) { 

        return deldir(dir); 

     * 修改sd卡上的檔案或目錄名

    public boolean renamesdfile(string oldfilename, string newfilename) { 

        file olefile = new file(sdpath + oldfilename); 

        file newfile = new file(sdpath + newfilename); 

        return olefile.renameto(newfile); 

     * 拷貝sd卡上的單個檔案

     * @param path

    public boolean copysdfileto(string srcfilename, string destfilename) 

            throws ioexception { 

        file srcfile = new file(sdpath + srcfilename); 

        file destfile = new file(sdpath + destfilename); 

        return copyfileto(srcfile, destfile); 

     * 拷貝sd卡上指定目錄的所有檔案

     * @param srcdirname

     * @param destdirname

     * @return

    public boolean copysdfilesto(string srcdirname, string destdirname) 

        file srcdir = new file(sdpath + srcdirname); 

        file destdir = new file(sdpath + destdirname); 

        return copyfilesto(srcdir, destdir); 

     * 移動sd卡上的單個檔案

     * @param srcfilename

     * @param destfilename

    public boolean movesdfileto(string srcfilename, string destfilename) 

        return movefileto(srcfile, destfile); 

     * 移動sd卡上的指定目錄的所有檔案

    public boolean movesdfilesto(string srcdirname, string destdirname) 

        return movefilesto(srcdir, destdir); 

    /*

     * 将檔案寫入sd卡。如:writesdfile("test.txt");

    public output writesdfile(string filename)

        fileoutputstream fos = new fileoutputstream(file); 

        return new output(fos); 

     * 在原有檔案上繼續寫檔案。如:appendsdfile("test.txt");

    public output appendsdfile(string filename)

        fileoutputstream fos = new fileoutputstream(file,

true); 

     * 從sd卡讀取檔案。如:readsdfile("test.txt");

    public input readsdfile(string filename)

        fileinputstream fis = new fileinputstream(file); 

        return new input(fis); 

     * 建立私有檔案

    public file creatdatafile(string filename)

        file file = new file(filespath + filename); 

     * 建立私有目錄

    public file creatdatadir(string dirname) { 

        file dir = new file(filespath + dirname); 

     * 删除私有檔案

    public boolean deldatafile(string filename) { 

        return delfile(file); 

     * 删除私有目錄

    public boolean deldatadir(string dirname) { 

        file file = new file(filespath + dirname); 

        return deldir(file); 

     * 更改私有檔案名

     * @param oldname

     * @param newname

    public boolean renamedatafile(string oldname, string newname) { 

        file oldfile = new file(filespath + oldname); 

        file newfile = new file(filespath + newname); 

        return oldfile.renameto(newfile); 

     * 在私有目錄下進行檔案複制

     *            : 包含路徑及檔案名

    public boolean copydatafileto(string srcfilename, string destfilename) 

        file srcfile = new file(filespath + srcfilename); 

        file destfile = new file(filespath + destfilename); 

     * 複制私有目錄裡指定目錄的所有檔案

    public boolean copydatafilesto(string srcdirname, string destdirname) 

        file srcdir = new file(filespath + srcdirname); 

        file destdir = new file(filespath + destdirname); 

     * 移動私有目錄下的單個檔案

    public boolean movedatafileto(string srcfilename, string destfilename) 

     * 移動私有目錄下的指定目錄下的所有檔案

    public boolean movedatafilesto(string srcdirname, string destdirname) 

     * 将檔案寫入應用私有的files目錄。如:writefile("test.txt");

    public output wirtefile(string filename)

        outputstream os = context.openfileoutput(filename, 

                context.mode_world_writeable); 

        return new output(os); 

     * 在原有檔案上繼續寫檔案。如:appendfile("test.txt");

    public output appendfile(string filename)

        outputstream os = context.openfileoutput(filename, context.mode_append); 

     * 從應用的私有目錄files讀取檔案。如:readfile("test.txt");

    public input readfile(string filename)

        inputstream is = context.openfileinput(filename); 

        return new input(is); 

    /**********************************************************************************************************/ 

    /*********************************************************************************************************/ 

     * 删除一個檔案

     * @param file

    public boolean delfile(file file) { 

        if (file.isdirectory()) 

            return false; 

        return file.delete(); 

     * 删除一個目錄(可以是非空目錄)

     * @param dir

    public boolean deldir(file dir) { 

        if (dir == null || !dir.exists() || dir.isfile()) { 

        } 

        for (file file : dir.listfiles()) { 

            if (file.isfile()) { 

                file.delete(); 

            } else if (file.isdirectory()) { 

                deldir(file);// 遞歸 

            } 

        dir.delete(); 

     * 拷貝一個檔案,srcfile源檔案,destfile目标檔案

    public boolean copyfileto(file srcfile, file destfile)

        if (srcfile.isdirectory() || destfile.isdirectory()) 

            return false;// 判斷是否是檔案 

        fileinputstream fis = new fileinputstream(srcfile); 

        fileoutputstream fos = new fileoutputstream(destfile); 

        int readlen =

0; 

        byte[] buf = new

byte[1024]; 

        while ((readlen = fis.read(buf)) != -1) { 

            fos.write(buf, 0, readlen); 

        fos.flush(); 

        fos.close(); 

        fis.close(); 

     * 拷貝目錄下的所有檔案到指定目錄

     * @param srcdir

     * @param destdir

    public boolean copyfilesto(file srcdir, file destdir)

        if (!srcdir.isdirectory() || !destdir.isdirectory()) 

            return false;// 判斷是否是目錄 

        if (!destdir.exists()) 

            return false;// 判斷目标目錄是否存在 

        file[] srcfiles = srcdir.listfiles(); 

        for (int i =

0; i < srcfiles.length; i++) { 

            if (srcfiles[i].isfile()) { 

                // 獲得目标檔案 

                file destfile = new file(destdir.getpath() +

"//" 

                        + srcfiles[i].getname()); 

                copyfileto(srcfiles[i], destfile); 

            } else if (srcfiles[i].isdirectory()) { 

                file thedestdir = new file(destdir.getpath() +

                copyfilesto(srcfiles[i], thedestdir); 

     * 移動一個檔案

     * @param srcfile

     * @param destfile

    public boolean movefileto(file srcfile, file destfile)

        boolean iscopy = copyfileto(srcfile, destfile); 

        if (!iscopy) 

        delfile(srcfile); 

     * 移動目錄下的所有檔案到指定目錄

    public boolean movefilesto(file srcdir, file destdir)

        if (!srcdir.isdirectory() || !destdir.isdirectory()) { 

        file[] srcdirfiles = srcdir.listfiles(); 

0; i < srcdirfiles.length; i++) { 

            if (srcdirfiles[i].isfile()) { 

                file onedestfile = new file(destdir.getpath() +

                        + srcdirfiles[i].getname()); 

                movefileto(srcdirfiles[i], onedestfile); 

                delfile(srcdirfiles[i]); 

            } else if (srcdirfiles[i].isdirectory()) { 

                movefilesto(srcdirfiles[i], onedestfile); 

                deldir(srcdirfiles[i]); 

package otheri.common;

import java.io.file;

import java.io.fileinputstream;

import java.io.fileoutputstream;

import java.io.ioexception;

import java.io.inputstream;

import java.io.outputstream;

import otheri.io.input;

import otheri.io.output;

import android.content.context;

import android.os.environment;

public class filehelper {

private context context;

private string sdpath;

private string filespath;

public filehelper(context context) {

this.context = context;

sdpath = environment.getexternalstoragedirectory().getpath() + "//";

filespath = this.context.getfilesdir().getpath() + "//";

}

/**

* 在sd卡上建立檔案

*

* @throws ioexception

*/

public file creatsdfile(string filename) throws ioexception {

file file = new file(sdpath + filename);

file.createnewfile();

return file;

* 删除sd卡上的檔案

* @param filename

public boolean delsdfile(string filename) {

if (file == null || !file.exists() || file.isdirectory())

return false;

return true;

* 在sd卡上建立目錄

* @param dirname

public file creatsddir(string dirname) {

file dir = new file(sdpath + dirname);

dir.mkdir();

return dir;

* 删除sd卡上的目錄

public boolean delsddir(string dirname) {

return deldir(dir);

* 修改sd卡上的檔案或目錄名

public boolean renamesdfile(string oldfilename, string newfilename) {

file olefile = new file(sdpath + oldfilename);

file newfile = new file(sdpath + newfilename);

return olefile.renameto(newfile);

* 拷貝sd卡上的單個檔案

* @param path

public boolean copysdfileto(string srcfilename, string destfilename)

throws ioexception {

file srcfile = new file(sdpath + srcfilename);

file destfile = new file(sdpath + destfilename);

return copyfileto(srcfile, destfile);

* 拷貝sd卡上指定目錄的所有檔案

* @param srcdirname

* @param destdirname

* @return

public boolean copysdfilesto(string srcdirname, string destdirname)

file srcdir = new file(sdpath + srcdirname);

file destdir = new file(sdpath + destdirname);

return copyfilesto(srcdir, destdir);

* 移動sd卡上的單個檔案

* @param srcfilename

* @param destfilename

public boolean movesdfileto(string srcfilename, string destfilename)

return movefileto(srcfile, destfile);

* 移動sd卡上的指定目錄的所有檔案

public boolean movesdfilesto(string srcdirname, string destdirname)

return movefilesto(srcdir, destdir);

/*

* 将檔案寫入sd卡。如:writesdfile("test.txt");

public output writesdfile(string filename) throws ioexception {

fileoutputstream fos = new fileoutputstream(file);

return new output(fos);

* 在原有檔案上繼續寫檔案。如:appendsdfile("test.txt");

public output appendsdfile(string filename) throws ioexception {

fileoutputstream fos = new fileoutputstream(file, true);

* 從sd卡讀取檔案。如:readsdfile("test.txt");

public input readsdfile(string filename) throws ioexception {

fileinputstream fis = new fileinputstream(file);

return new input(fis);

* 建立私有檔案

public file creatdatafile(string filename) throws ioexception {

file file = new file(filespath + filename);

* 建立私有目錄

public file creatdatadir(string dirname) {

file dir = new file(filespath + dirname);

* 删除私有檔案

public boolean deldatafile(string filename) {

return delfile(file);

* 删除私有目錄

public boolean deldatadir(string dirname) {

file file = new file(filespath + dirname);

return deldir(file);

* 更改私有檔案名

* @param oldname

* @param newname

public boolean renamedatafile(string oldname, string newname) {

file oldfile = new file(filespath + oldname);

file newfile = new file(filespath + newname);

return oldfile.renameto(newfile);

* 在私有目錄下進行檔案複制

* : 包含路徑及檔案名

public boolean copydatafileto(string srcfilename, string destfilename)

file srcfile = new file(filespath + srcfilename);

file destfile = new file(filespath + destfilename);

* 複制私有目錄裡指定目錄的所有檔案

public boolean copydatafilesto(string srcdirname, string destdirname)

file srcdir = new file(filespath + srcdirname);

file destdir = new file(filespath + destdirname);

* 移動私有目錄下的單個檔案

public boolean movedatafileto(string srcfilename, string destfilename)

* 移動私有目錄下的指定目錄下的所有檔案

public boolean movedatafilesto(string srcdirname, string destdirname)

* 将檔案寫入應用私有的files目錄。如:writefile("test.txt");

public output wirtefile(string filename) throws ioexception {

outputstream os = context.openfileoutput(filename,

context.mode_world_writeable);

return new output(os);

* 在原有檔案上繼續寫檔案。如:appendfile("test.txt");

public output appendfile(string filename) throws ioexception {

outputstream os = context.openfileoutput(filename, context.mode_append);

* 從應用的私有目錄files讀取檔案。如:readfile("test.txt");

public input readfile(string filename) throws ioexception {

inputstream is = context.openfileinput(filename);

return new input(is);

/**********************************************************************************************************/

/*********************************************************************************************************/

* 删除一個檔案

* @param file

public boolean delfile(file file) {

if (file.isdirectory())

return file.delete();

* 删除一個目錄(可以是非空目錄)

* @param dir

public boolean deldir(file dir) {

if (dir == null || !dir.exists() || dir.isfile()) {

for (file file : dir.listfiles()) {

if (file.isfile()) {

} else if (file.isdirectory()) {

deldir(file);// 遞歸

dir.delete();

* 拷貝一個檔案,srcfile源檔案,destfile目标檔案

public boolean copyfileto(file srcfile, file destfile) throws ioexception {

if (srcfile.isdirectory() || destfile.isdirectory())

return false;// 判斷是否是檔案

fileinputstream fis = new fileinputstream(srcfile);

fileoutputstream fos = new fileoutputstream(destfile);

int readlen = 0;

byte[] buf = new byte[1024];

while ((readlen = fis.read(buf)) != -1) {

fos.write(buf, 0, readlen);

fos.flush();

fos.close();

fis.close();

* 拷貝目錄下的所有檔案到指定目錄

* @param srcdir

* @param destdir

public boolean copyfilesto(file srcdir, file destdir) throws ioexception {

if (!srcdir.isdirectory() || !destdir.isdirectory())

return false;// 判斷是否是目錄

if (!destdir.exists())

return false;// 判斷目标目錄是否存在

file[] srcfiles = srcdir.listfiles();

for (int i = 0; i < srcfiles.length; i++) {

if (srcfiles[i].isfile()) {

// 獲得目标檔案

file destfile = new file(destdir.getpath() + "//"

+ srcfiles[i].getname());

copyfileto(srcfiles[i], destfile);

} else if (srcfiles[i].isdirectory()) {

file thedestdir = new file(destdir.getpath() + "//"

copyfilesto(srcfiles[i], thedestdir);

* 移動一個檔案

* @param srcfile

* @param destfile

public boolean movefileto(file srcfile, file destfile) throws ioexception {

boolean iscopy = copyfileto(srcfile, destfile);

if (!iscopy)

delfile(srcfile);

* 移動目錄下的所有檔案到指定目錄

public boolean movefilesto(file srcdir, file destdir) throws ioexception {

if (!srcdir.isdirectory() || !destdir.isdirectory()) {

file[] srcdirfiles = srcdir.listfiles();

for (int i = 0; i < srcdirfiles.length; i++) {

if (srcdirfiles[i].isfile()) {

file onedestfile = new file(destdir.getpath() + "//"

+ srcdirfiles[i].getname());

movefileto(srcdirfiles[i], onedestfile);

delfile(srcdirfiles[i]);

} else if (srcdirfiles[i].isdirectory()) {

movefilesto(srcdirfiles[i], onedestfile);

deldir(srcdirfiles[i]);

getpath與getabsoultepath的差別:

getabsolutepath():傳回抽象路徑名的絕對路徑名字元串。

public static

void test1(){ 

        file file1 = new file(".//test1.txt"); 

        file file2 = new file("d://workspace//test//test1.txt"); 

        system.out.println("-----預設相對路徑:取得路徑不同------"); 

        system.out.println(file1.getpath()); 

        system.out.println(file1.getabsolutepath()); 

        system.out.println("-----預設絕對路徑:取得路徑相同------"); 

        system.out.println(file2.getpath()); 

        system.out.println(file2.getabsolutepath()); 

-----預設相對路徑:取得路徑不同------ 

./test1.txt 

d:/workspace/test/./test1.txt 

-----預設絕對路徑:取得路徑相同------ 

d:/workspace/test/test1.txt 

---------------------------------------------------- 

void test2() throws exception{ 

        file file = new file("..//src//test1.txt"); 

        system.out.println(file.getabsolutepath()); 

        system.out.println(file.getcanonicalpath()); 

d:/workspace/test/../src/test1.txt 

d:/workspace/src/test1.txt 

-------------------------------------------- 

void test3() throws exception{ 

        file file = new file("d://text.txt"); 

public static void test1(){

file file1 = new file(".//test1.txt");

file file2 = new file("d://workspace//test//test1.txt");

system.out.println("-----預設相對路徑:取得路徑不同------");

system.out.println(file1.getpath());

system.out.println(file1.getabsolutepath());

system.out.println("-----預設絕對路徑:取得路徑相同------");

system.out.println(file2.getpath());

system.out.println(file2.getabsolutepath());

-----預設相對路徑:取得路徑不同------

./test1.txt

d:/workspace/test/./test1.txt

-----預設絕對路徑:取得路徑相同------

d:/workspace/test/test1.txt

----------------------------------------------------

public static void test2() throws exception{

file file = new file("..//src//test1.txt");

system.out.println(file.getabsolutepath());

system.out.println(file.getcanonicalpath());

d:/workspace/test/../src/test1.txt

d:/workspace/src/test1.txt

--------------------------------------------

public static void test3() throws exception{

file file = new file("d://text.txt");

(1),确定d盤下沒有text.txt這個檔案,直接執行這段代碼,得到的結果是:

d:/text.txt注意這裡試大寫的text.txt

(2)在d盤下建立一個檔案,名叫text.txt,再次執行代碼,得到結果

d:/text.txt同樣的代碼得到不同的結果。

繼續閱讀