Android数据存储与IO之三(File存储之ExternalStorage)

来源:互联网 发布:海洋污染数据 编辑:程序博客网 时间:2024/05/17 16:54

Android数据存储与IO三(File存储ExternalStorage

 

    当程序利用Context提供的openFileinput或者openFileOutput打开文件输入、输出流时,程序打开的都是/data/data/<package>/files/下的文件,这样存储的空间可能有限并且保存在/data/data/<package>目录中文件,会在卸载应用程序时被删除掉,这可能会带来一些问题,为了更好的存取应用程序的大文件数据,应用程序需要读、写SD卡上的文件。读写SD卡的文件步骤如下所示:

1.调用Environment的getExternalStorageState().方法判断手机是否插入了SD卡并且具有读写SD卡的权限具体如下

      当Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTEDtrue时说明已经插入SD卡并且具有读写权限,注意,这里的读写权限需要在编写程序中添加,具体方法是在AndroidManifest.xml文件中添加

           <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>//具有创建与删除的权限

          <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>//具有修改的权限

          <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />//具有读取的权限

   来获得权限

2.调用EnvironmentgetExternalStorageDirectory()方法来获取SD开的目录

3.使用FileInputStreamFileOutputStreamFileReaderFileWriter读写SD卡中的文件,其方法与读写本机内存中的文件方法类似

   最后同样的,一定要记得关闭IO

  下面我们利用SD卡进行简单的文件读写

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

test08 = (TextView) findViewById(R.id.TEST);

fileName = "/test08.txt";

write("hhhhhhhhhhhhhhhhhhhhhhhhhhhhh");

read();

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

    public void write(String str){

     if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//判断当前状态

     File sdCardDir=Environment.getDataDirectory();//获得SD卡路径

     try {

File file=new File(sdCardDir.getCanonicalPath()+fileName);//获得文件路径

RandomAccessFile raf=new RandomAccessFile(file,"rw");//RandomAccessFile是向指定文件中添加内容,FileOutputStream是直接覆盖原有文件内容

raf.seek(file.length());//将文件记录指针移到文件最后

raf.write(str.getBytes());//输出文件内容

raf.close();//关闭IO流

catch (Exception e) {

e.printStackTrace();

}

     }

    }

    public void read(){

     if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

     File sdCardDir=Environment.getDataDirectory();

     BufferedReader  buf;

     try {

File file=new File(sdCardDir.getCanonicalPath()+fileName);

FileInputStream fis=new FileInputStream(file);

buf=new BufferedReader(new InputStreamReader(fis));

StringBuffer strbuf=new StringBuffer();

String line=null;

while((line=buf.readLine())!=null){//循环读取所有字符

strbuf.append(line);

}

buf.close();

test08.setText(strbuf.toString());

catch (Exception e) {

}

    

     }else{

     }

    }

}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天气热宝宝不爱喝水怎么办 狗脐带掉了出血怎么办 刚生的小狗没奶怎么办 家兔在笼子里下崽怎么办 小兔子不吃东西 精神不好怎么办 兔子要生宝宝了怎么办 宝宝让兔子咬了怎么办 兔子的右耳坏了怎么办 被小兔子咬了怎么办 打老鼠被老鼠咬了了怎么办 制作棒棒糖时木棍翘起怎么办 兔子被打后怕我怎么办 兔子后腿摔断了怎么办 兔子腿骨头断了怎么办 减肥老是控制不住吃怎么办 不爱吃主食爱吃零食怎么办 猫咪奶涨的很硬怎么办 斩魂技能乱加的怎么办 狗狗不吃东西还拉稀怎么办 狗狗拉稀不吃饭怎么办 狗狗几天不吃东西怎么办 狗狗不吃不喝怎么办 拖鞋洗了有臭味怎么办 拖鞋湿水了很臭怎么办 棉被上渗了酸奶怎么办 酸奶弄在衣服上怎么办 孩子把褥子尿湿怎么办 小孩尿过的褥子怎么办 包包放着发霉了怎么办 被套盖久了发黄怎么办 小白鞋里面发霉怎么办 棉被淋了一点雨怎么办 苹果手机被拉进电话群怎么办 墙上的插座烧了怎么办 富士康早退4分钟怎么办 我老婆起泡疹腿剌痛睡不着了怎么办 oppo耳机孔坏了怎么办 魅族耳机口坏了怎么办 控制线的报验资料怎么办 人失踪报警派出所不管怎么办 铁板的货架久了怎么办