Android开发 文件操作
16lz
2021-01-25
Android的文件、文件夹操作是比较常见的应用,文件操作涉及到拷贝、文件夹拷贝、文件转字节数组、字节数组转文件等。
public class FileUtil {/** * 复制文件 * @param fromFile 源文件 * @param toFile 目标文件 * @param rewrite 是否覆盖 */public static void copyfile(File fromFile, File toFile,Boolean rewrite){if (!fromFile.exists()) {return;}if (!fromFile.isFile()) {return ;}if (!fromFile.canRead()) {return ;}if (!toFile.getParentFile().exists()) {toFile.getParentFile().mkdirs();}if (toFile.exists() && rewrite) {toFile.delete();}try {java.io.FileInputStream fosfrom = new java.io.FileInputStream(fromFile);java.io.FileOutputStream fosto = new FileOutputStream(toFile);byte bt[] = new byte[1024];int c;while ((c = fosfrom.read(bt)) > 0) {fosto.write(bt, 0, c); //将内容写到新文件当中}fosfrom.close();fosto.close();} catch (Exception ex) {MyLog.e(FileUtil.class, ex.getMessage());}}/** * 复制整个文件夹内容 * @param oldPath String 原文件路径 如:c:/fqf * @param newPath String 复制后路径 如:f:/fqf/ff * @return boolean */ public void copyFolder(String oldPath, String newPath) { try { (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹 File a=new File(oldPath); String[] file=a.list(); File temp=null; for (int i = 0; i < file.length; i++) { if(oldPath.endsWith(File.separator)){ temp=new File(oldPath+file[i]); } else{ temp=new File(oldPath+File.separator+file[i]); } if(temp.isFile()){ FileInputStream input = new FileInputStream(temp); FileOutputStream output = new FileOutputStream(newPath + "/" + (temp.getName()).toString()); byte[] b = new byte[1024 * 5]; int len; while ( (len = input.read(b)) != -1) { output.write(b, 0, len); } output.flush(); output.close(); input.close(); } if(temp.isDirectory()){//如果是子文件夹 copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); } } } catch (Exception e) { MyLog.e(FileUtil.class, e==null?"":e.getMessage());} }public static void CopyAssets(Context context,String assetDir, String dir) {String[] files;try {files = context.getResources().getAssets().list(assetDir);} catch (IOException e1) {MyLog.e(FileUtil.class, "cannot get assets.");return;}File mWorkingPath = new File(dir);// if this directory does not exists, make one.if (!mWorkingPath.exists()) {if (!mWorkingPath.mkdirs()) {MyLog.e(FileUtil.class, "cannot create directory.");}}for (int i = 0; i < files.length; i++) {try {String fileName = files[i];// we make sure file name not contains '.' to be a folder.if (!fileName.contains(".")) {if (0 == assetDir.length()) { CopyAssets(context,fileName, dir + fileName + "/");} else {CopyAssets(context,assetDir + "/" + fileName, dir + fileName+ "/");}continue;}File outFile = new File(mWorkingPath, fileName);if (outFile.exists())outFile.delete();InputStream in = null;if (0 != assetDir.length())in = context.getAssets().open(assetDir + "/" + fileName);elsein = context.getAssets().open(fileName);OutputStream out = new FileOutputStream(outFile);// Transfer bytes from in to outbyte[] buf = new byte[1024];int len;while ((len = in.read(buf)) > 0) {out.write(buf, 0, len);}in.close();out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}public static boolean fileIsExists(String filePath){File f=new File(filePath);if(!f.exists()){return false;}return true;}/** * 获得指定文件的byte数组 * @param filePath * @return */public static byte[] getBytes(String filePath,String fileName){ byte[] buffer = null; try { File file = new File(filePath+"\\"+fileName); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(1024*1024); byte[] b = new byte[1000]; int n; while ((n = fis.read(b)) != -1) { bos.write(b, 0, n); } fis.close(); bos.close(); buffer = bos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return buffer; } /** * 根据byte数组,生成文件 * @param bfile * @param filePath * @param fileName */public static void getFile(byte[] bfile, String filePath,String fileName) { BufferedOutputStream bos = null; FileOutputStream fos = null; File file = null; try { File dir = new File(filePath); if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在 dir.mkdirs(); } file = new File(filePath+"\\"+fileName); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); bos.write(bfile); } catch (Exception e) { e.printStackTrace(); } finally { if (bos != null) { try { bos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } }
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- android 资源如何查找(AaptAssets)分析
- 第一个android程序HelloWorld
- Android(安卓)Studio如何导入第三方库文件
- Android中XML文件解析
- [Android]文件操作模式与SDCard读写访问