Android创建指定大小、类型的文件
2015-11-10 10:41
363 查看
package com.testSDcardFill; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class CreateFile { public enum FileUnit { KB, MB, GB } /** * 创建指定大小和类型的文件 * @author cxq * @param targetFile 文件路径以及文件名,需要加后缀 * @param fileLength 文件大小 * @param unit 单位,KB,MB,GB * @retrun boolean */ public boolean createFile(String targetFile, long fileLength, FileUnit unit) { //指定每次分配的块大小 long KBSIZE = 1024; long MBSIZE1 = 1024 * 1024; long MBSIZE10 = 1024 * 1024 * 10; switch (unit) { case KB: fileLength = fileLength * 1024; break; case MB: fileLength = fileLength * 1024*1024; break; case GB: fileLength = fileLength * 1024*1024*1024; break; default: break; } FileOutputStream fos = null; File file = new File(targetFile); try { if (!file.exists()) { file.createNewFile(); } long batchSize = 0; batchSize = fileLength; if (fileLength > KBSIZE) { batchSize = KBSIZE; } if (fileLength > MBSIZE1) { batchSize = MBSIZE1; } if (fileLength > MBSIZE10) { batchSize = MBSIZE10; } long count = fileLength / batchSize; long last = fileLength % batchSize; fos = new FileOutputStream(file); FileChannel fileChannel = fos.getChannel(); for (int i = 0; i < count; i++) { ByteBuffer buffer = ByteBuffer.allocate((int) batchSize); fileChannel.write(buffer); } if (last != 0) { ByteBuffer buffer = ByteBuffer.allocate((int) last); fileChannel.write(buffer); } fos.close(); return true; } catch (IOException e) { e.printStackTrace(); } finally { try { if (fos != null) { fos.close(); } } catch (IOException e) { e.printStackTrace(); } } return false; } }
调用:
String filePath="/sdcard/A.txt";
int fileSize=10;
createFile(filePath, fileSize, FileUnit.MB);
相关文章推荐
- Android 之屏幕全屏、去掉标题栏
- Android 批量插入联系人 分享
- AndroidStudio 配置SVN以及使用代码管理
- Android版本检测升级
- 【Android测试工具】03. ApkTool在Mac上的安装和使用
- 关于Android的布局管理器的理解
- Android Studio导入项目的几种方法
- Android常见XML转义字符
- Android 2.3 NFC简介
- Android studio程序打包
- android使用POI读写word doc文件
- Android之Input子系统事件分发流程
- Android编程规范不完全指南
- Android利用JDBC连接服务器数据库
- Android让ListView记住上次滑动到的位置
- ADT升级到22.6.0版本之后
- Android---Notification通知栏
- 今天来扒一扒Android 缓存--- 清除缓存
- cordova插件中exec()总是返回error的原因
- Android中的“再按一次返回键退出程序”实现