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