Android实现读写SD卡

Android实现读写SD卡,第1张

概述SD卡的读写是我们在开发Android应用程序过程中最常见的 *** 作。下面介绍SD卡的读写 *** 作方式:

SD卡的读写是我们在开发AndroID 应用程序过程中最常见的 *** 作。下面介绍SD卡的读写 *** 作方式:

   1. 获取SD卡的根目录@H_301_4@

复制代码 代码如下:
String  sdCardRoot = Environment.getExternalStorageDirectory().getabsolutePath();  

 2. 在SD卡上创建文件夹目录@H_301_4@

/**  * 在SD卡上创建目录  */ public file createDirOnSDCard(String dir) {   file dirfile = new file(sdCardRoot + file.separator + dir +file.separator);   Log.v("createDirOnSDCard",sdCardRoot + file.separator + dir +file.separator);   dirfile.mkdirs();   return dirfile; } 

 3. 在SD卡上创建文件

/**  * 在SD卡上创建文件  */ public file createfileOnSDCard(String filename,String dir) throws IOException {   file file = new file(sdCardRoot + file.separator + dir + file.separator + filename);   Log.v("createfileOnSDCard",sdCardRoot + file.separator + dir + file.separator + filename);   file.createNewfile();   return file; } 

4.判断文件是否存在于SD卡的某个目录@H_301_4@

/**  * 判断SD卡上文件是否存在  */ public boolean isfileExist(String filename,String path) {   file file = new file(sdCardRoot + path + file.separator + filename);   return file.exists(); } 

  5.将数据写入到SD卡指定目录文件@H_301_4@

/* 写入数据到SD卡中    */   public file writeData2SDCard(String path,String filename,inputStream data)   {     file file = null;     OutputStream output = null;          try {       createDirOnSDCard(path); //创建目录       file = createfileOnSDCard(filename,path); //创建文件       output = new fileOutputStream(file);       byte buffer[] = new byte[2*1024];     //每次写2K数据       int temp;       while((temp = data.read(buffer)) != -1 )       {         output.write(buffer,temp);       }       output.flush();            } catch (Exception e) {       e.printstacktrace();     }     finally{       try {         output.close();  //关闭数据流 *** 作       } catch (Exception e2) {         e2.printstacktrace();       }     }          return file;   } 

   注意事项

      对SD卡的 *** 作,必须要申请权限:   

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

详情看这里 https://www.oudahe.com/p/22649/

注意:不直接进行读出是为了防止打文件 *** 作对内存的消耗,所以用输入流读到硬盘上。

public String readfile(String filename) throws Exception{    fileinputStream fis = context.openfileinput(filename);    byte[] bytes = new byte[fis.available()];    fis.read(bytes);    fis.close();    return new String(bytes,"utf-8");  }

当文件很大的时候,byte[]会占用很大的内存。

package cn.itcast.fileio.service; import java.io.ByteArrayOutputStream;import java.io.file;import java.io.fileinputStream;import java.io.fileOutputStream;import java.io.IOException;import java.io.inputStream;import java.io.OutputStream; import androID.content.Context;import androID.os.Environment; public class SdCardService {  private Context ctx;   public SdCardService(Context ctx) {    this.ctx = ctx;  }   /**   * 写文件入skcard   */  public voID writetoSdCard(String filename,String cont) {    try {      // 判断是否有挂载sdcard      if (Environment.getExternalStorageState().equals(          Environment.MEDIA_MOUNTED)) {        // 得到sdcar文件目录        file dir = Environment.getExternalStorageDirectory();        file file = new file(dir,"itcast.txt");        fileOutputStream fos = new fileOutputStream(file);        fos.write(cont.getBytes());        fos.close();      }    }    catch (Exception e) {      e.printstacktrace();    }  }  /**   * 读SdCard中的文件   */  public String readSdCard(String filename) {    try {      // 判断是否有挂载sdcard      if (Environment.getExternalStorageState().equals(          Environment.MEDIA_MOUNTED)) {        // 得到sdcar文件目录        file dir = Environment.getExternalStorageDirectory();        file file = new file(dir,"itcast.txt");        fileinputStream fis = new fileinputStream(file);        return readis2String(fis);      }    }    catch (Exception e) {      e.printstacktrace();    }    return null;  }     /**   * 将输入流数据读取到输出流当中   */  private OutputStream readis2Os(inputStream is,OutputStream os){    try {      byte[] bytes = new byte[1024];      int length = 0 ;      while((length = is.read(bytes)) != -1){        os.write(bytes,length);      }      is.close();      os.close();    }    catch (IOException e) {      e.printstacktrace();    }    return os ;  }     /**   * 将输入流数据读取到输出流当中   */  public byte[] readis2Bytes(inputStream is){    ByteArrayOutputStream baos = new ByteArrayOutputStream();    readis2Os(is,baos);    return baos.toByteArray() ;  }     public String readis2String(inputStream is){    try {      return new String(readis2Bytes(is),"utf-8");    }    catch (Exception e) {      e.printstacktrace();    }    return null ;  }     public String readis2String(String filename){    try {      if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){        file dir = Environment.getExternalStorageDirectory();        file file = new file(dir,filename);        fileinputStream is = new fileinputStream(file);        return readis2String(is);      }    }    catch (Exception e) {      e.printstacktrace();    }    return null ;  }}

总结

以上是内存溢出为你收集整理的Android实现读写SD卡全部内容,希望文章能够帮你解决Android实现读写SD卡所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1149266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存