- 在AndroidManifest.xml中插入应用程序要拥有的相关权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
文件编写时使用那种编码编写的,读取时使用响应编码
如果这个文件以ANSI的编码格式保存的,那么
new InputStreamReader(is,"GBK")
如果这个文件以UTF-8的形式保存的,那么
new InputStreamReader(is,"UTF-8")
private void createSdDir(String dirName){
File sd=Environment.getExternalStorageDirectory();
String path=sd.getPath()+"/" + dirName;
File file=new File(path);
/**
*判断是否存在engineerzhong目录
* file.exists()判断目录是否存在 存在返回true 不存在返回false
* !file.exists() 对结果取反 true则为false
*/
if(!file.exists())
file.mkdir();
}
public void getSDpath(){
File sdDir = null
File sdDir1 = null
File sdDir2 = null
boolean sdCardExist=Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
if(sdCardExist){
sdDir = Environment.getExternalStorageDirectory()
sdDir1 = Environment.getDataDirectory()
sdDir2 = Environment.getRootDirectory()
}
System.out.println("ExternalStorageDirectory:" + sdDir.toString())
System.out.println("DataDirectory:" + sdDir1.toString())
System.out.println("RootDirectory:" + sdDir2.toString())
}
xml文件就只有两个EditText和两个Button,这边不再赘述
public class MainActivity extends AppCompatActivity {
final String FILE_NAME = "/EngineerZhong.txt";
private EditText edit1;
private EditText edit2;
private Button btn1;
private Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit1 = (EditText) findViewById(R.id.edit1);
edit2 = (EditText) findViewById(R.id.edit2);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
getSDpath();
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
write(edit1.getText().toString());
Toast.makeText(MainActivity.this, "写入数据成功", Toast.LENGTH_SHORT).show();
edit1.setText("");
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
edit2.setText(read());
}
});
}
/**
* 写数据到SDcard
* */
private void write(String content){
try{
/**
* 手机是否插入了SDcard,并且应用程序是否具有访问SDcard的权限**/
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();
File targetFile = new File(sdCardDir.getCanonicalPath() + FILE_NAME);
RandomAccessFile raf = new RandomAccessFile(targetFile,"rw");
System.out.println(targetFile.toString());
raf.seek(targetFile.length());
raf.write(content.getBytes());
raf.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 读取文件数据
* */
private String read(){
try{
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();
FileInputStream fis = new FileInputStream(sdCardDir.getCanonicalPath() + FILE_NAME);
BufferedReader buffer = new BufferedReader(new InputStreamReader(fis));
StringBuilder sb = new StringBuilder("");
String line = null;
while((line = buffer.readLine()) != null){
sb.append(line);
}
buffer.close();
return sb.toString();
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}
更新时间:2016年8月11日 By:EngineerZhong