字节流缓冲区 字节缓冲流 读写SD卡的内容


//【1】 读取SD卡的内容


/** 一般获取SD 卡的目标地址 通过
External 外部的 Storage 存储 Directory 位置
Environment.getExternalStorageDirectory().getpath(); // 获取的目标地址是 /storage/emulated/0 这个表示引用目录,表示是手机内置的sd卡
*
【1】 写入SD卡内容需要加权限
<uses-permission android:name="android.premission.WRITE_EXTERNAL_STORAGE"/>
【2】读取SD卡内容需要加权限
<uses-permission android:name="android.premission.READ_EXTERNAL_STORAGE"/>
*/
public void sdcard(){
//[1]
String path = Environment.getExternalStorageDirectory().getPath();
FileOutputStream fileOutputStream = new FileOutputStream(path+"/sdtest.txt");
System.out.println("SD卡的路径"+path+"/sdtest.txt"); // SD卡的路径/storage/emulated/0/sdtest.txt
// 这个目录是引用目录,直接是内置sd卡的地址 所以这个文件直接存放在 这个目录里面。 // 使用的小米手机,不知道获取别的手机sd卡地址会不会改变
String str = "你好111111";
byte[] bytes = str.getBytes();


fileOutputStream1.write(bytes);


fileOutputStram.flush();
fileOutputStram.close();


}






字节流缓冲区(自己建一个缓冲区出来)


public void copy(){


String path = context.getFilesDir().getPath();


FileInputStream fileInputStream = new FileInputStream(path+"test.txt");


FileOutputStream fileOutputStream = new FileOutputStream(path+"/sdtest.txt");
// 定义一个字节数组,作为缓冲区
byte[] buffer = new byte[1024];
// 定义一个 int 类型的 len 的值来记录读入的缓冲区的字节的数目
int len ;
while( (len = fileInputStream.read(buffer))!=-1){


fileOutputStream.write(buffer,0,len);


}


fileOutputStram.flush();
fileOutputStram.close();


}


//小知识点
/**
*需要计算方法执行了多长时间 current 现在的
long time = System.currentTimeMillis(); // 返回1970 到现在的毫秒数
*/


long startTime = System.currentTimeMillis();


.....程序


long endTime = System.currentTimeMillis();


System.out.print("程序执行了"+(startTime-endTime)+"毫秒");












// 字节缓冲流 BufferInputStream BufferOutputStream
/**
* 字节缓冲流 用于在读写数据时提供缓冲功能。 作用:有效的提高数据的读写效率。
* 【1】创建一个 带缓冲区的输入流 BufferInputStram(new FileInputStream(""))
* 【2】创建一个 带缓冲区的输出流 BufferOutputStram(new FlieOutputStram(""))
* 【3】进行读写 操作就可以了
*
* */
public static void bufferbyteStream(){
try {
long StartTime = System.currentTimeMillis(); // 返回1970 年到现在的毫秒数 多用于计时来用
// sd卡的存储位置
String path = Environment.getExternalStorageDirectory().getPath();
//[1]
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(path+"/sdtest.txt"));
//[2]
BufferedOutputStream bufferedOutputStream =new BufferedOutputStream(new FileOutputStream(path+"/stest.txt"));
//[3]
int len ;
while(( len=bufferedInputStream.read() )!=-1){

bufferedOutputStream.write(len);


}
bufferedInputStream.close();
bufferedOutputStream.close();

long endTime = System.currentTimeMillis();
long time = endTime-StartTime;
System.out.println("总共耗时:"+time+"毫秒"); // 2毫秒 完成

} catch (Exception e) {
e.printStackTrace();
}
}



















更多相关文章

  1. BlobCache算法详解
  2. Android基础面试简答题
  3. Android(安卓)读写配置文件properties
  4. 目前可用的Android(安卓)SDK在线更新镜像服务器:
  5. 架构1--BufferQueue 和 gralloc
  6. Android-Android(安卓)10 创建不了文件夹
  7. Android断点续传原理
  8. Google官方出品的Android(安卓)App反编绎工具-Enjarify
  9. 修改android4.2系统源码实现system组和root用户访问sd卡

随机推荐

  1. SqlServer GO命令循环使用实例代码
  2. SQL中Truncate的用法
  3. SqlServer2016模糊匹配的三种方式及效率
  4. SQL Server索引的原理深入解析
  5. sql server性能调优 I/O开销的深入解析
  6. sql server学习基础之内存初探
  7. SQL删除多列语句的写法
  8. MyBatis SQL xml处理小于号与大于号正确
  9. Sql Server 开窗函数Over()的使用实例详
  10. SQL Server 分页编号的另一种方式【推荐