HDDCopy文件拷贝程序总结
来源:互联网 发布:java有哪些集合类 编辑:程序博客网 时间:2024/06/13 07:29
主要有两个地方值得探讨:
- 获取目录大小,采用非递归遍历目录所有文件求出所有文件大小总和,这省去了函数调用的栈操作,提高了效率
- 使用Runtime.getRuntime().exec()调用本地程序
根据需求需要拷贝TF卡HDD目录下所有文件和文件夹到内部存储的指定目录(默认为/mnt/sdcard/),拷贝命令的设计成这样:“cp -rf /mnt/sdcard/external_sd/HDD/* /mnt/sdcard/”,没有通配符*号的拷贝的话,直接可以使用Runtime.getRuntime().exec(“cp -rf /mnt/sdcard/external_sd/HDD/ /mnt/sdcard/”)便完事,但这会在目标目录新建一个HDD目录,这不符合需求,所有必须加*号,此时直接Runtime.getRuntime().exec(“cp -rf /mnt/sdcard/external_sd/HDD/* /mnt/sdcard/”)便会执行不成功,通过获取输入输出流会发现提示cp:cp:can't stat /mnt/sdcard/test/*:No such file or directory,这是因为使用Runtime.getRuntime().exec(“ cp -rf /mnt/sdcard/external_sd/HDD/* /mnt/sdcard/ ”)执行命令不等于console命令,它只是调用cp这个程序并传入相关的参数,而cp程序本身并不具备解析通配符*号的能力,在shell直接敲“cp -rf /mnt/sdcard/external_sd/HDD/* /mnt/sdcard/”是能正确执行的,shell会解析 “cp -rf /mnt/sdcard/external_sd/HDD/* ”,然后多次调用cp拷贝HDD/目录下所有文件和目录,所以解决的办法是Runtime.getRuntime().exec(new String[]{"sh", "-c", “cp -rf /mnt/sdcard/external_sd/HDD/* /mnt/sdcard/” }),此时调用的sh程序,“cp -rf /mnt/sdcard/external_sd/HDD/ * /mnt/sdcard/” 这条命令当做参数传递给了sh,这时就相当于在控制台敲命令执行了
程序代码结构:
其中
最主要的是HDDCopyActivity.java界面和流程控制
MitechFilesInfo.java张工写的获取文件信息的辅助类
SystemProperties.java为获取系统信息的辅助类
0 0
- HDDCopy文件拷贝程序总结
- 文件拷贝程序
- java文件拷贝程序
- 文件拷贝程序
- 用来拷贝文件的程序
- c语言拷贝文件程序
- 只拷贝文件不拷贝文件夹的Java程序
- windows程序中拷贝文件的选择
- 感觉还不错的文件拷贝程序
- 一个经典的文件拷贝程序
- windows下的批处理程序----拷贝文件
- 第17个python程序:拷贝文件
- 后台拷贝U盘文件的程序源码。
- 带console进度条的文件拷贝程序,C++
- 文件的读与拷贝在java程序中的区别
- 利用mmap()写一个拷贝文件的程序
- 文件拷贝
- 拷贝文件
- 2013总结
- 2014.1.1新年第一天
- WIN7下无法访问FTP解决办法
- 编译时重新编译api的错误
- mm编译时如何导入第三方jar包
- HDDCopy文件拷贝程序总结
- vbox虚拟机下配置汉澳sinox上网
- 解决方案与需求
- android 音量控制 流程梳理
- 2014-一个新的开始
- RK平台下USB_OTG提供的接口和返回的状态
- 2014新年新气象
- Java面试题集(131-135)
- 定制xfce快捷键