Android如何读写assets、raw、sdard和工程文件

Android开发离不开对文件的操作,下面来看下Android是怎么操作其内置目录文件及外部sdcard数据的。

资源文件:
/assets目录下test.txt
/res/raw目录下rawfile.txt

一、读取assets目录下的文件

 InputStream is = getResources().getAssets().open("test.txt");
            Reader in = new InputStreamReader(is);
            BufferedReader bufferedReader = new BufferedReader(in);
            String line = null;
            while (null != (line = bufferedReader.readLine()) ){
                System.out.println("assets file==========" + line);
            }
            bufferedReader.close();
            in.close();
            is.close();

由于assets下的文件不会再R.java中生成相应的ID,因此Android提供了AssetManager的方法访问assets下的资源。

二、读取raw目录下的文件(raw位于res目录下,这个文件需要手工创建)

is = getResources().openRawResource(R.raw.rawfile);
            in = new InputStreamReader(is);
            bufferedReader = new BufferedReader(in);
            line = null;
            while (null != (line = bufferedReader.readLine()) ){
                System.out.println("rawfile==========" + line);
            }
            bufferedReader.close();
            in.close();
            is.close();

三、读写工程内部文件

FileOutputStream fileOutputStream = openFileOutput("projectfile.txt", Context.MODE_PRIVATE);
            OutputStreamWriter osw = new OutputStreamWriter(fileOutputStream);
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write("ooooooooooooooooooo");
            bw.close();
            osw.close();
            fileOutputStream.close();

            FileInputStream fileInputStream = openFileInput("projectfile.txt");
            InputStreamReader isr = new InputStreamReader(fileInputStream);
            char[] input = new char[fileInputStream.available()];
            isr.read(input);
            isr.close();
            fileInputStream.close();
            String str = new String(input);
            System.out.println("project file=============" + str);

四、读写sdcard文件
1、AndroidManifest.xml中添加权限控制

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

2、java操作代码:

File file = Environment.getExternalStorageDirectory();//获取sdcard路径
if(file.exists()){//判断是否存在sdcard
    System.out.println("sdcard file path========" + file.getAbsolutePath());
    File myfile = new File(file, "myfile_sdcard.txt");
    myfile.createNewFile();
    FileOutputStream fos = new FileOutputStream(myfile);
    fos.write("AAAAAAAAAAa".getBytes());
    fos.flush();
    fos.close();
}
//读取sdcard文件
File file1 = new File(file, "myfile_sdcard.txt");
InputStream inputStream = new FileInputStream(file1);
Reader reader = new InputStreamReader(inputStream);
BufferedReader bufferedReader1 = new BufferedReader(reader);
String iline = null;
while(null != (iline = bufferedReader1.readLine())){
    System.out.println("from sdcard myfile_sdcard.txt============" + iline);
}
bufferedReader1.close();
reader.close();
inputStream.close();

上述四种操作Android文件的方式,各个处理方式都有所不同。

1、读取assets目录下的资源文件时需要通过getResources().getAssets()方法获取AssetManager的open方法来进行处理;

2、而读取raw目录下的资源文件则通过getResources().openRawResource(R.raw.资源名称)的方式来获取;

3、读写工程其他目录的文件则通过openFileOutput和openFileInput来进行处理;

4、sdcard文件的操作需要额外在AndroidManifest.xml中进行权限的声明,并通过Environment.getExternalStorageDirectory()获取sdcard的路径,剩下的就是Java对文件的操作了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值