Android的讀寫檔案許可權
阿新 • • 發佈:2019-02-01
/**測試沒通過 * 寫檔案 * @param str */ public void write(String str){ File file = new File(Environment.getExternalStorageDirectory()+"/cardvalue","config.txt"); FileWriter fw; try { if (file.exists()){ file.delete(); file.createNewFile(); } fw = new FileWriter(file); fw.write(str); fw.flush(); fw.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 讀檔案 * @return */ public String read(){ File file = new File(Environment.getExternalStorageDirectory()+"/cardvalue","config.txt"); FileReader fr ; if (!file.exists()){ return null ; }else{ try { fr = new FileReader(file); char buffer[] = new char[(int) file.length()]; fr.read(buffer); String str = new String(buffer); fr.close(); return str; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
http://blog.csdn.net/ztp800201/article/details/7322110下面是讀取檔案和寫入檔案的程式程式碼: 讀取檔案: [java] view plain copy public void readInfo(View view){ File file = new File("/data/data/com.aaron.login/files/public.txt"); FileInputStream fis; try { fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String result = br.readLine(); Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(MainActivity.this, "讀取檔案失敗", Toast.LENGTH_LONG).show(); } } 寫入檔案: [java] view plain copy public void writeInfo(View view){ File file = new File("/data/data/com.aaron.login/files/public.txt"); FileOutputStream fos; try { fos = new FileOutputStream(file); fos.write("hahaha".getBytes()); fos.close(); Toast.makeText(MainActivity.this, "寫入檔案成功", Toast.LENGTH_LONG).show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(MainActivity.this, "寫入檔案失敗", Toast.LENGTH_LONG).show(); } } File file = new File("/data/data/com.aaron.login/files/public.txt"); 同File file = new File(Context.getFileDir(), "public.txt"); 若要儲存檔案到SD卡:File file = new File("/sdcard/info.txt");
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
成功案列:
package com.example.readwrite;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends Activity {
private final static String PATH = "/sdcard/digu";
private final static String FILENAME = "/notes.txt";
String text1 ="888888888888888888888888888888888";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onWrite("www888888888888888888888888888888888");
readtex();
}
//向sdcard寫檔案
/**
* 寫檔案
*/
private void onWrite(String str) {
try {
Log.e("555555555555555", "Start Write");
//1.判斷是否存在sdcard
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
//目錄
File path = new File(PATH);
//檔案
File f = new File(PATH + FILENAME);
if(!path.exists()){
//2.建立目錄,可以在應用啟動的時候建立
path.mkdirs();
}
if (!f.exists()) {
//3.建立檔案
f.createNewFile();
}else if(f.exists()){
f.delete();
f.createNewFile();
}
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(f));
//4.寫檔案,從EditView獲得文字值
osw.write(str);
osw.close();
}
} catch (Exception e) {
Log.d("66666666666666", "file create error");
}
}
public String readtex(){
//檔案
File f = new File(PATH + FILENAME);
FileInputStream is;
try {
is = new FileInputStream(f);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] array = new byte[1024];
int len = -1;
while( (len = is.read(array)) != -1){
bos.write(array,0,len);
bos.close();
is.close();
Toast.makeText(MainActivity.this,"讀出來的資料" +bos.toString(), Toast.LENGTH_SHORT).show();
Log.e("讀出來的資料", bos.toString());
return bos.toString();
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}