1. 程式人生 > >Android的讀寫檔案許可權

Android的讀寫檔案許可權

	/**測試沒通過
	 * 寫檔案
	 * @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;
			}
			    
	    }
下面是讀取檔案和寫入檔案的程式程式碼:

讀取檔案:


[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");
http://blog.csdn.net/ztp800201/article/details/7322110


    <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;	
	}


}