当前位置: 首页 > news >正文

关于安卓文件复制的杂谈(一)文件复制,文件夹复制

背景

一些很基础的东西,往往用起来,找起来,乱七八糟,所以特此记录

环境

win10,jdk8+,as4+

备注

不考虑安卓沙箱机制,这里讲解的是思路,示例中,是以应用内部目录进行测试

开发

把一个文件,复制到另外一个目录

这里是比较简单的,注意的点就是:
(1)判断目表目录是否存在,否则创建后再进行复制
(2)源文件是否存在
核心代码如下:

    public static boolean copyFile(String sourceFilePath, String targetFolderPath) {try {new File(targetFolderPath).mkdirs();File sourceFile = new File(sourceFilePath);File targetFile = new File(targetFolderPath,sourceFile.getName());InputStream in = new FileInputStream(sourceFile);OutputStream out = new FileOutputStream(targetFile);byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) > 0) {out.write(buffer, 0, length);}in.close();out.close();return true;} catch (IOException e) {e.printStackTrace();return false;}}

把一个文件夹里面的东西,复制到另外一个文件夹

这里去看网上的资料,大坑,迫不得已,花费了几十分钟踩坑,才得出这个方法。
思路如下:

基础文件判断

(1)判断目标文件夹是否存在,否则创建
(2)判断源文件夹是否存在,否则报错

判断是目录还是文件

首先,这里要有一个思想,就是如果是复制源是一个目录,那么我们对应的目标源,也应该有一个目录,然后后续再把目录里面的东西复制进去。如果复制源是文件,那么直接复制即可


那么,是不是又涉及到了一个递归逻辑,就是:
如果是目录,就目标源创建后递归数据,如果是文件,则复制?
核心代码如下:

    public static void copyFolder(File sourceFolder, File targetFolder) {if (sourceFolder.isDirectory()) {if (!targetFolder.exists()) {targetFolder.mkdirs();}String[] files = sourceFolder.list();if (files != null) {for (String file : files) {File sourceFile = new File(sourceFolder, file);File targetFile = new File(targetFolder, file);if (sourceFile.isDirectory()) {targetFile.mkdirs();}copyFolder(sourceFile, targetFile);}}} else {try {FileInputStream fis = new FileInputStream(sourceFolder);FileOutputStream fos = new FileOutputStream(targetFolder);byte[] buffer = new byte[1024];int length;while ((length = fis.read(buffer)) > 0) {fos.write(buffer, 0, length);}fis.close();fos.close();} catch (IOException e) {e.printStackTrace();}}}

上述的方法,进行实际测试,效果良好,如有问题,可以及时反馈!!!
tha’s all-----------------------------------------------------------------------------

http://www.lryc.cn/news/322079.html

相关文章:

  • Lucene查询语法,适用于 ELk Kibana 查询
  • 蓝桥杯2023年第十四届省赛真题-阶乘求和
  • 多租户平台前端存储结构的选择
  • C++11 新特性:常量表达式 constexpr(下)
  • 大数据开发--02.环境准备
  • 选择word中的表格VBA
  • 开放签开源电子签章白皮书-简版
  • uniapp、vue2.6、H5,利用腾讯TRTC,快速跑通1v1视频功能
  • Spring Data访问Elasticsearch----查询方法
  • PyTorch 深度学习(GPT 重译)(四)
  • 视频无水印批量下载软件|抖音视频提取工具
  • 【linux】环境基础|开发工具|gcc|yum|vim|gdb|make|git
  • 小程序中实现轮播图左向堆叠
  • 零基础入门数据挖掘系列之「建模调参」
  • 如何在Mac中删除照片?这里有详细步骤
  • Qt笔记 事件处理_鼠标事件
  • 【Vue】三、使用ElementUI实现图片上传
  • ffmpeg的ffprobe.exe查询修改视频信息
  • Windows 2019服务器上安装NFS服务器
  • 元素定位之xpath和css
  • JavaScript 什么是纯函数,有哪些常见的纯函数
  • c++ 指针大小
  • IBM SPSS Statistics:提升数据处理效率的利器
  • is ignored, because it exists, maybe from xml file
  • Spark面试整理-Spark是什么?
  • Android 13.0 开机启动优化之PMS扫描apk耗时相关功能优化
  • 云蜜罐技术(德迅猎鹰)诞生
  • ARM:汇编点灯
  • 69: 偷菜时间表(python)
  • 【计算机视觉】三、图像处理——实验:图像去模糊和去噪、提取边缘特征