一、内置内存:
例子:
//写一个 file文件夹下的 文件 public void outputClick(View v) { try { FileOutputStream fileOutput = this.openFileOutput("aa.txt", MODE_APPEND); String s = "我是中国人"; byte[] bytes = s.getBytes(); fileOutput.write(bytes, 0, bytes.length); fileOutput.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //读取一个 file文件夹下的文件 public void inputClick(View v) { try { FileInputStream fileInput = this.openFileInput("aa.txt"); StringBuffer sb = new StringBuffer(); byte[] bytes = new byte[1024]; int len; while ((len = fileInput.read(bytes)) != -1) { sb.append(new String(bytes, 0, len)); } fileInput.close(); Toast.makeText(MainActivity.this, "输出:" + sb.toString(), Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // 读取一个 Raw文件夹下的 文件 public void inputRawClick(View w) { try { InputStream inputStream = getResources().openRawResource(R.raw.aaa); StringBuffer sb=new StringBuffer(); int len; byte[] bytes = new byte[1024]; while ((len = inputStream.read(bytes)) != -1) { sb.append(new String(bytes,0,len)); } inputStream.close(); Toast.makeText(MainActivity.this, "---"+sb, Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); } } // 写一个 缓存临时文件 public void outpurChareClick(View v) { try { File temp= File.createTempFile("temp",null,getCacheDir()); FileOutputStream f=new FileOutputStream(temp); PrintStream ps=new PrintStream(f); ps.print("我可是要成为编程王的男人"); ps.close(); f.close(); } catch (IOException e) { e.printStackTrace(); } }
其他方法:
getFilesDir() 获取私有文件目录 /data/data/包名/files
getDir(name,Model)创建(或者打开已存在的)目录 /data/data/包名/app_<文件名>
deleteFile(name)删除私有目录的文件 /data/data/包名/files
fileList()获取 /data/data/包名/files目录的文件名数组
二、外置内存:
1.检测是否有外置内存卡
//检测手机中是否有外置内存卡 public void isSDCardClick(View v) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Toast.makeText(MainActivity.this, "有内存卡", Toast.LENGTH_SHORT).show(); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY)){ Toast.makeText(MainActivity.this, "内存卡只读", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(MainActivity.this, "没有内存卡", Toast.LENGTH_SHORT).show(); } }
2. 获取sdcard路径
Environment.getExternalStorageDirectory().getPath()
3.访问android内置的文件夹
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS). //访问sdcard下面的downloads文件夹
//API 19以后才能使用
4.在SD卡中写入一个私有文件
//在外置内存卡上 写入一个私有文件 public void outputSDcardPrivateFileClick(View v) { //获取sd卡 私有文件夹路径 File file = getExternalFilesDir(null); //为空表示默认 if(file != null){//这个方法不一定都能得到,所以在使用之前要先判断 是否为null try { FileOutputStream out=new FileOutputStream(file+"/zlm.txt"); PrintStream ps=new PrintStream(out); ps.print("zlm is a good boy"); ps.close(); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }5.在SD卡中写入一个私有缓存文件
//在外置内存卡上 写入一个私有缓存文件 public void outputSDcardPrivateCacheFileClick(View v) { try {//getExternalCacheDir 获取私有缓存文件夹路径 File temp=File.createTempFile("zlm",null,getExternalCacheDir()); if(temp != null){//这个方法不一定都能得到,所以在使用之前要先判断 是否为null FileOutputStream out=new FileOutputStream(temp); PrintStream ps=new PrintStream(out); ps.print("zlm is a good boy,这是缓存私有文件"); ps.close(); out.close(); } } catch (IOException e) { e.printStackTrace(); } }
6.查询剩余空间
getFreeSpace()-------返回剩余空间
getTotalSapce()------返回总空间
不需要每次都进行判断 也未必知道要存入的数据的多大的 所以能catch这个IOException就行。