android文件操作(基本囊括所有的文件操作了)

本文介绍了一个用于Android平台的文件操作工具类,提供了包括文件创建、删除、复制、移动等在内的多种文件管理功能,并支持对SD卡及应用私有目录进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package filehelper;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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 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().getAbsolutePath() + "/";
FILESPATH = this.context.getFilesDir().getPath() + "//";
System.out.println("Sdpath=======>"+SDPATH+"\n"+"filepath========>"+FILESPATH);
}


public File[] listfile(String dirname) {
File file = new File(SDPATH+dirname);
if (file.isDirectory()) {

return file.listFiles();
}
return null;
}

/**
* 在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) {
File file = new File(SDPATH + 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.mkdirs();
return dir;
}


/**
* 删除SD卡上的目录

* @param dirName
*/
public boolean delSDDir(String dirName) {
File dir = new File(SDPATH + dirName);
return delDir(dir);
}


/**
* 修改SD卡上的文件或目录名

* @param fileName
*/
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
* @throws IOException
*/
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
* @throws IOException
*/
public boolean copySDFilesTo(String srcDirName, String destDirName)
throws IOException {
File srcDir = new File(SDPATH + srcDirName);
File destDir = new File(SDPATH + destDirName);
return copyFilesTo(srcDir, destDir);
}


/**
* 移动SD卡上的单个文件

* @param srcFileName
* @param destFileName
* @return
* @throws IOException
*/
public boolean moveSDFileTo(String srcFileName, String destFileName)
throws IOException {
File srcFile = new File(SDPATH + srcFileName);
File destFile = new File(SDPATH + destFileName);
return moveFileTo(srcFile, destFile);
}


/**
* 移动SD卡上的指定目录的所有文件

* @param srcDirName
* @param destDirName
* @return
* @throws IOException
*/
public boolean moveSDFilesTo(String srcDirName, String destDirName)
throws IOException {
File srcDir = new File(SDPATH + srcDirName);
File destDir = new File(SDPATH + destDirName);
return moveFilesTo(srcDir, destDir);
}


/*
* 将文件写入sd卡。如:writeSDFile("test.txt");
*/
public BufferedOutputStream writeSDFile(String fileName) throws IOException {
File file = new File(SDPATH + fileName);
FileOutputStream fos = new FileOutputStream(file);
return new BufferedOutputStream(fos);
}


/*
* 在原有文件上继续写文件。如:appendSDFile("test.txt");
*/
public BufferedOutputStream appendSDFile(String fileName)
throws IOException {
File file = new File(SDPATH + fileName);
FileOutputStream fos = new FileOutputStream(file, true);
return new BufferedOutputStream(fos);
}


/*
* 从SD卡读取文件。如:readSDFile("test.txt");
*/
public BufferedInputStream readSDFile(String fileName) throws IOException {
File file = new File(SDPATH + fileName);
FileInputStream fis = new FileInputStream(file);
return new BufferedInputStream(fis);
}


/**
* 建立私有文件

* @param fileName
* @return
* @throws IOException
*/
public File creatDataFile(String fileName) throws IOException {
File file = new File(FILESPATH + fileName);
file.createNewFile();
return file;
}


/**
* 建立私有目录

* @param dirName
* @return
*/
public File creatDataDir(String dirName) {
File dir = new File(FILESPATH + dirName);
dir.mkdir();
return dir;
}


/**
* 删除私有文件

* @param fileName
* @return
*/
public boolean delDataFile(String fileName) {
File file = new File(FILESPATH + fileName);
return delFile(file);
}


/**
* 删除私有目录

* @param dirName
* @return
*/
public boolean delDataDir(String dirName) {
File file = new File(FILESPATH + dirName);
return delDir(file);
}


/**
* 更改私有文件名

* @param oldName
* @param newName
* @return
*/
public boolean renameDataFile(String oldName, String newName) {
File oldFile = new File(FILESPATH + oldName);
File newFile = new File(FILESPATH + newName);
return oldFile.renameTo(newFile);
}


/**
* 在私有目录下进行文件复制

* @param srcFileName
*            : 包含路径及文件名
* @param destFileName
* @return
* @throws IOException
*/
public boolean copyDataFileTo(String srcFileName, String destFileName)
throws IOException {
File srcFile = new File(FILESPATH + srcFileName);
File destFile = new File(FILESPATH + destFileName);
return copyFileTo(srcFile, destFile);
}


/**
* 复制私有目录里指定目录的所有文件

* @param srcDirName
* @param destDirName
* @return
* @throws IOException
*/
public boolean copyDataFilesTo(String srcDirName, String destDirName)
throws IOException {
File srcDir = new File(FILESPATH + srcDirName);
File destDir = new File(FILESPATH + destDirName);
return copyFilesTo(srcDir, destDir);
}


/**
* 移动私有目录下的单个文件

* @param srcFileName
* @param destFileName
* @return
* @throws IOException
*/
public boolean moveDataFileTo(String srcFileName, String destFileName)
throws IOException {
File srcFile = new File(FILESPATH + srcFileName);
File destFile = new File(FILESPATH + destFileName);
return moveFileTo(srcFile, destFile);
}


/**
* 移动私有目录下的指定目录下的所有文件

* @param srcDirName
* @param destDirName
* @return
* @throws IOException
*/
public boolean moveDataFilesTo(String srcDirName, String destDirName)
throws IOException {
File srcDir = new File(FILESPATH + srcDirName);
File destDir = new File(FILESPATH + destDirName);
return moveFilesTo(srcDir, destDir);
}


/*
* 将文件写入应用私有的files目录。如:writeFile("test.txt");
*/
public BufferedOutputStream wirteFile(String fileName) throws IOException {
OutputStream os = context.openFileOutput(fileName,
Context.MODE_WORLD_WRITEABLE);
return new BufferedOutputStream(os);
}


/*
* 在原有文件上继续写文件。如:appendFile("test.txt");
*/
public BufferedOutputStream appendFile(String fileName) throws IOException {
OutputStream os = context.openFileOutput(fileName, Context.MODE_APPEND);
return new BufferedOutputStream(os);
}


/*
* 从应用的私有目录files读取文件。如:readFile("test.txt");
*/
public BufferedInputStream readFile(String fileName) throws IOException {
InputStream is = context.openFileInput(fileName);
return new BufferedInputStream(is);
}


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


/**
* 删除一个文件

* @param file
* @return
*/
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()) {
return false;
}
for (File file : dir.listFiles()) {
if (file.isFile()) {
file.delete();
} else if (file.isDirectory()) {
delDir(file);// 递归
}
}
dir.delete();
return true;
}


/**
* 拷贝一个文件,srcFile源文件,destFile目标文件

* @param path
* @throws IOException
*/
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();
return true;
}


/**
* 拷贝目录下的所有文件到指定目录

* @param srcDir
* @param destDir
* @return
* @throws IOException
*/
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() + "//"
+ srcFiles[i].getName());
copyFilesTo(srcFiles[i], theDestDir);
}
}
return true;
}


/**
* 移动一个文件

* @param srcFile
* @param destFile
* @return
* @throws IOException
*/
public boolean moveFileTo(File srcFile, File destFile) throws IOException {
boolean iscopy = copyFileTo(srcFile, destFile);
if (!iscopy)
return false;
delFile(srcFile);
return true;
}


/**
* 移动目录下的所有文件到指定目录

* @param srcDir
* @param destDir
* @return
* @throws IOException
*/
public boolean moveFilesTo(File srcDir, File destDir) throws IOException {
if (!srcDir.isDirectory() || !destDir.isDirectory()) {
return false;
}
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()) {
File oneDestFile = new File(destDir.getPath() + "//"
+ srcDirFiles[i].getName());
moveFilesTo(srcDirFiles[i], oneDestFile);
delDir(srcDirFiles[i]);
}
}
return true;
}
}
android文件架构详解 cache : 是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处。 红色标记的两个文件是debug模式下产生的 data : 存放用户安装的软件以及各种数据。 default.prop : 默认配置文件 dev : 设备节点文件的存放地 etc : 指向 /system/etc ,配置文件存放目录 init : 系统启动到文件系统的时候第一个运行的程序。 init.goldfish.rc : 初始化文件 init.rc : 初始化文件 proc : /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。 root : 为空 。 sbin: 只放了一个用於调试的adbd程序 sdcard: 是SD卡中的FAT32文件系统挂载的目录 sqlite_stmt_journals: 一个根目录下的tmpfs文件系统,用於存放临时文件数据。 sys : 用於挂载 sysfs文件系统。 在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值 system :系统中的大部分东西都在这各目录下,很重要的一个目录文件 system目录是在Android文件系统占有及其重要的位置,基本上所有的工具和应用程序都在这个目录下,我看来是一个真正的rootfs。他在Android手机中存放在nandflash的 mtd3中,是一个yaffs2文件系统,在启动时被挂载在root的/system目录下,其中包含有: # ls -a -l /system drwxr-xr-x root 208 1970-01-01 08:00 xbin drwxr-xr-x root root 1970-01-01 08:00 modules drwxr-xr-x root root 2010-06-23 09:39 framework drwxr-xr-x root root 2010-06-23 09:39 fonts drwxr-xr-x root root 2010-06-23 09:39 etc -rw-r--r-- root root 2197 2010-06-23 09:39 build.prop drwxr-xr-x root root 2010-06-23 09:39 media drwxr-xr-x root shell 2010-06-23 09:39 bin drwxr-xr-x root root 2010-06-23 09:39 usr drwxr-xr-x root root 2010-06-23 09:39 app drwxr-xr-x root root 2010-06-23 09:39 lost+found drwxr-xr-x root root 2010-06-23 09:39 lib drwxr-xr-x root root 2010-06-23 09:39 sd -rw-r--r-- root root 1452010-06-23 09:39 init.rc # xbin :下放了很多系统管理工具,这些工具不是到toolbox的链接,每个都是可执行程序。如果你看到这些命令你会发现他们根本不常用,他们都是为系统管理员准备的,是一些系统管理和配置工具。这个文件夹的作用相当於标准Linux文件系统中的 /sbin。 modules:使用来存放内核模块(主要是fs和net)和模块配置文件的地方。 framework: 是JAVA平台的一些核心文件,属於JAVA平台系统框架文件。里面的文件都是.jar和.odex文件。 备注:什么是odex文件? odex是被优化过的JAVA程序文件,体积通常是.jar的4倍左右。执行效率比.jar高。 fonts :字体文件的存放目录。 etc :这里存放了系统中几乎所有的配置文件,根目录下的/etc就链结於此。 build.prop :是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件。 media :里面主要是存放了系统的铃声的,分为 notifications(通知)、ui(界面)、alarms(警告)和ringtones(铃声),里面都是.ogg音频文件。 bin :是存放用户常用的工具程序的,其中大部分是到toolbox的链接(类似嵌入式Linux中的busybox)。toolbox应该是 google简化版的busybox。 usr :用户的配置文件,如键盘布局、共享、时区文件等等。您可以cat 来看看。 app :存放的是Android系统自带的JAVA应用程序。 lost+found :yaffs文件系统固有的,类似回收站的文件夹,只有是yaffs文件系统都会有。 lib :存放几乎所有的共享(.so)文件。 sd :SD卡中的EXT2分区的挂载目录 init.rc :一个初始化脚本,用於将/system/modules和/system/xbin挂载为cramfs,避免系统被无意破坏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值