apk安装时在SDCard创建文件夹和复制文件

一、效果:

安装apk到用户手机上时在用户的SDCard创建文件夹(其实就是建立你唯一的应用的目录咯),以及复制一些你不想编译而有用的文件到你的目录下!

 

二、关键点:

1、得到sdcard的路径:android.os.Environment.getExternalStorageDirectory().getAbsolutePath()一般都会得到路径“/mnt/sdcard"

2、将你需要复制到用户sdcard的文件放到android代码res/raw路径如”res/raw/flycatdeng.txt",放在raw中的文件不会被编译。通过getResources().openRawResource(R.raw.flycatdeng);方式来获得这个资源,返回InputStream输入流。

3、得到目录或文件 File file=new File(String path); 判断是否有这个文件或目录file.exists(),返回true则表示存在;

4、如果目录不存在则需要创建目录(文件夹),file.mkdirs();//这里非常需要注意,如果是只有一个文件夹的话可以用mkdir(),但是如果你要再文件夹中还要有文件夹的话则需要用到mkdirs()

5、输入输出文件流,可见以下代码

6、最最最关键的是一定要在AndroidManifest.xml文件中配置添加用户权限:

sdcard创建和删除的文件的权限:

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

sdcard文件写入内容的权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

三、源码:

public class MainActivity extends Activity {
	private String fileDirPath = android.os.Environment
			.getExternalStorageDirectory().getAbsolutePath()// 得到外部存储卡的数据库的路径名
			+ "/Mulu01/Mulu02/Mulu03";// 我要存储的目录
	private String fileName = "flycatdeng.txt";// 要存储的文件名

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		createFile();// 创建目录及文件
	}

	private void createFile() {
		String filePath = fileDirPath + "/" + fileName;// 文件路径
		try {
			File dir = new File(fileDirPath);// 目录路径
			if (!dir.exists()) {// 如果不存在,则创建路径名
				System.out.println("要存储的目录不存在");
				if (dir.mkdirs()) {// 创建该路径名,返回true则表示创建成功
					System.out.println("已经创建文件存储目录");
				} else {
					System.out.println("创建目录失败");
				}
			}
			// 目录存在,则将apk中raw中的需要的文档复制到该目录下
			File file = new File(filePath);
			if (!file.exists()) {// 文件不存在
				System.out.println("要打开的文件不存在");
				InputStream ins = getResources().openRawResource(
						R.raw.flycatdeng);// 通过raw得到数据资源
				System.out.println("开始读入");
				FileOutputStream fos = new FileOutputStream(file);
				System.out.println("开始写出");
				byte[] buffer = new byte[8192];
				int count = 0;// 循环写出
				while ((count = ins.read(buffer)) > 0) {
					fos.write(buffer, 0, count);
				}
				System.out.println("已经创建该文件");
				fos.close();// 关闭流
				ins.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值