天天看点

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同样的代码得到不同的结果。

继续阅读