External Storage外部存储——SD卡
JavaIO操作
文件操作 FileInputStream,FileOutputStream,FileReader,
FileWriter
File :操纵文件或者目录
BufferedReader readLine()
使用文件的路径:
Java开发:相对路径
Android卡发:绝对路径,sd卡根路径+项目文件夹+文件
注意事项:
1)权限 (只要程序中使用SD卡,添加写入权)
READ_EXTERNAL_STORAGE(新增)
WRITE_EXTERNAL_STORAGE
2)使用SD卡操作前检查SD卡是否可用
if(Environment.MEDIA_MOUNTED.equals
(Environment.getExternalStorageState())){
// sd卡可用
}
3)关于SD卡设备的路径
String sdRoot = Environment.getExternalStorageDirectory
().getAbsolutePath();
JavaIO操作
文件操作 FileInputStream,FileOutputStream,FileReader,
FileWriter
File :操纵文件或者目录
BufferedReader readLine()
使用文件的路径:
Java开发:相对路径
Android卡发:绝对路径,sd卡根路径+项目文件夹+文件
注意事项:
1)权限 (只要程序中使用SD卡,添加写入权)
READ_EXTERNAL_STORAGE(新增)
WRITE_EXTERNAL_STORAGE
2)使用SD卡操作前检查SD卡是否可用
if(Environment.MEDIA_MOUNTED.equals
(Environment.getExternalStorageState())){
// sd卡可用
}
3)关于SD卡设备的路径
String sdRoot = Environment.getExternalStorageDirectory
().getAbsolutePath();
4)使用模拟器测试时,一定要注意模拟器要给sd卡分配空间大小
以下是代码:
public class MainActivity extends Activity {
private String sdRoot , path , filename;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
Toast.makeText(this, "请检查sd卡是否成功挂载!", Toast.LENGTH_LONG).show() ;
finish();
return;
}
sdRoot = Environment.getExternalStorageDirectory().getAbsolutePath() ;
path = "demo" ;
filename = "weather.txt" ;
// 从sd卡读取数据
readFromsd() ;
// 写入sd卡缓存数据
saveTosd() ;
Toast.makeText(this, "保存缓存数据成功", Toast.LENGTH_LONG).show() ;
}
/**
* 从sd卡读取缓存数据
*/
private void readFromsd() {
FileReader fr = null ;
BufferedReader br = null ;
try {
fr = new FileReader(sdRoot + "/" + path + "/" + filename) ;
br = new BufferedReader(fr) ;
StringBuffer sbuffer = new StringBuffer() ;
String line = null ;
while(null != (line=br.readLine())) {
sbuffer.append(line + "\n") ;
}
TextView tv = (TextView) findViewById(R.id.tv) ;
tv.setText(sbuffer.toString()) ;
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "没有缓存数据!", Toast.LENGTH_LONG).show() ;
} finally {
if(null != br) {
try {
br.close() ;
} catch (IOException e) {
e.printStackTrace();
}
}
if(null != fr) {
try {
fr.close() ;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 往sd卡写入数据
*/
private void saveTosd() {
FileWriter fw = null ;
try {
// 判定路径是否存在,不存在应该创建
File file = new File(sdRoot + "/" + path) ;
if(!file.exists() || !file.isDirectory()) {
file.mkdirs(); // 创建目录
}
// 写入
fw = new FileWriter(sdRoot + "/" + path + "/" + filename) ;
fw.write("tody:29\n") ;
fw.write("tomorrow:31\n") ;
fw.write("random : " + Math.random() + "\n") ;
} catch (IOException e) {
e.printStackTrace();
} finally {
if(null != fw) {
try {
fw.close() ;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}