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

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


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


/** 一般获取SD 卡的目标地址 通过
External 外部的  Storage 存储 Directory 位置
Environment.getExternalStorageDirectory().getpath(); // 获取的目标地址是 /storage/emulated/0    这个表示引用目录,表示是手机内置的sd卡
*
【1】 写入SD卡内容需要加权限

【2】读取SD卡内容需要加权限

*/
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();
}
}



















你可能感兴趣的:(⑥------android,学习随笔------)