file(内部存储与外部存储)

本文介绍了Android平台上的文件编程方法,包括内部存储与外部存储的区别及使用方式。内部存储通过openFileOutput和openFileInput实现文件读写;外部存储则直接通过File类进行操作,并需在AndroidManifest.xml中声明相应权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android的文件编程与JAVA下的文件编程无太多区别,注意的是几点。

1、android的文件系统分为内部和外部两种,内部是指系统的指定目录:/data/data/Activity所在的包/files,外部通常是SD卡,如下代码:

textview.setText(getApplicationContext().getFilesDir() 
                + ":      " + Environment.getExternalStorageDirectory().getAbsolutePath());

执行结果分别为:/data/data/com.example.data02/files  以及mnt/sdcard。

2、对内部存储系统操作,Android提供了openFileOutput和openFileInput,代码如下:

        FileOutputStream outputStream;
        try {
            /*         MODE_PRIVATE 私有(只能创建它的应用访问) 重复写入时会文件覆盖 
            *          MODE_APPEND  私有   重复写入时会在文件的末尾进行追加,而不是覆盖掉原来的文件 
            *          MODE_WORLD_READABLE 公用  可读 
            *          MODE_WORLD_WRITEABLE 公用 可读写*/
            outputStream = openFileOutput("test.txt",  
                    Activity.MODE_PRIVATE);
            outputStream.write(textview.getText().toString().getBytes());  
            outputStream.flush();  
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        
        try {  
            FileInputStream in = this.openFileInput("test.txt"); 
            byte[] buffer = new byte[1024];  
            in.read(buffer);  
            String str = EncodingUtils.getString(buffer, "UTF-8");  
            textview1.setText(str.toString());  
            in.close();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  

3、针对SD卡的文件系统操作,与JAVA文件编写一样,唯一要注意的是增加权限:

    <span style="white-space:pre">  </span><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
   <span style="white-space:pre">   </span><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

代码实例如下:

        File sdcDir = Environment.getExternalStorageDirectory();  
        File file = new File(sdcDir,"info.txt");  
        
        try {
            FileOutputStream output = new FileOutputStream(file);
            output.write(textview.getText().toString().getBytes());  
            output.flush();  
            output.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        
        try {  
            FileInputStream inn = new FileInputStream(file);   
            byte[] buffer = new byte[1024];  
            inn.read(buffer);  
            String str = EncodingUtils.getString(buffer, "UTF-8");  
            textview2.setText(str.toString());  
            inn.close();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } 

 

转载于:https://www.cnblogs.com/Fredric-2013/archive/2013/01/26/4251159.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值