android的文件操作
16lz
2021-12-04
android的文件操作要有权限:
view plain copy to clipboard print ?- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
SD卡下的文件操作:
1、判断SD卡是否插入
view plain copy to clipboard print ?- Environment.getExternalStorageState().equals(
- android.os.Environment.MEDIA_MOUNTED);
2、获得sd卡根目录:
view plain copy to clipboard print ?- File skRoot = Environment.getExternalStorageDirectory();
私有目录下的文件操作:
1、获得私有根目录:
view plain copy to clipboard print ?- File fileRoot = Context.getFilesDir()+"//";
还未整理
文件夹或文件夹操作:
1、确定或获得文件夹和文件路径
a、获得文件或文件夹的绝对路径和相对路径。区别
view plain copy to clipboard print ?- String path = File.getPath();//相对
- String path = File.getAbsoultePath();//绝对
b 、获得文件或文件夹的父目录
view plain copy to clipboard print ?- String parentPath = File.getParent();
c、获得文件或文件夹的名称:
view plain copy to clipboard print ?- String Name = File.getName();
2、建立文件或文件夹
view plain copy to clipboard print ?- File.mkDir(); //建立文件夹
- File.createNewFile();//建立文件
3、判断是文件或文件夹
view plain copy to clipboard print ?- File.isDirectory()
4、列出文件夹下的所有文件和文件夹名
view plain copy to clipboard print ?- File[] files = File.listFiles();
5、修改文件夹和文件名
view plain copy to clipboard print ?- File.renameTo(dest);
6、删除文件夹或文件
view plain copy to clipboard print ?- 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) {
- 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.mkdir();
- 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 Output writeSDFile(String fileName) throws IOException {
- File file = new File(SDPATH + fileName);
- FileOutputStream fos = new FileOutputStream(file);
- return new Output(fos);
- }
- /*
- * 在原有文件上继续写文件。如:appendSDFile("test.txt");
- */
- public Output appendSDFile(String fileName) throws IOException {
- File file = new File(SDPATH + fileName);
- FileOutputStream fos = new FileOutputStream(file, true);
- return new Output(fos);
- }
- /*
- * 从SD卡读取文件。如:readSDFile("test.txt");
- */
- public Input readSDFile(String fileName) throws IOException {
- File file = new File(SDPATH + fileName);
- FileInputStream fis = new FileInputStream(file);
- return new Input(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 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);
- return new Output(os);
- }
- /*
- * 从应用的私有目录files读取文件。如:readFile("test.txt");
- */
- public Input readFile(String fileName) throws IOException {
- InputStream is = context.openFileInput(fileName);
- return new Input(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;
- }
- }
getPath与getAbsoultePath的区别:
getAbsolutePath():返回抽象路径名的绝对路径名字符串。
view plain copy to clipboard print ?- 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
- 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");
- System.out.println(file.getCanonicalPath());
(1),确定D盘下没有Text.txt这个文件,直接执行这段代码,得到的结果是:
D:/Text.txt注意这里试大写的Text.txt
(2)在D盘下建立一个文件,名叫text.txt,再次执行代码,得到结果
D:/text.txt同样的代码得到不同的结果。
更多相关文章
- android studio调整默认的debug.keystore位置。
- Android之自定义ProgressBar
- android 读取raw文件下文件内容
- Android(安卓)实现文件(图片)上传
- Android应用程序键盘(Keyboard)消息处理机制分析(12)
- eclipse中修改工程的Android版本
- android客户端利用sokcet通信和向Java服务端发请求,Java服务端把
- android ProgressBar 的使用
- android getResources的作用