Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> (Android review)文件的讀寫(對File的操作)

(Android review)文件的讀寫(對File的操作)

編輯:關於Android編程

Android中對操作的文件主要可以分為:File、XML、SharedPreference。


這篇博客主要介紹對File的操作:


1、MainActivity

package com.example.filetest;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

	private EditText et_name;
	private EditText et_content;
	private Button sdBtn;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		et_name = (EditText) findViewById(R.id.nameET);
		et_content = (EditText) findViewById(R.id.contentET);
		
		sdBtn = (Button) findViewById(R.id.sdcBT);
	}
	
	@Override
	protected void onResume() {//當界面切換到前台是執行這個方法...
		super.onResume();
		
		//根據SD卡的狀態設置按鈕是否可用
		if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
			sdBtn.setEnabled(false);
		}else{
			sdBtn.setEnabled(true);
		}
	}

	public void onClick(View view){
		String name = et_name.getText().toString();
		String content = et_content.getText().toString();
		
		FileService service = new FileService(this);
		
		try{
			switch (view.getId()) {
			case R.id.romBT:
				System.out.println("--------->保存到rom中");
				
				
				service.saveToRom(name,content);
				
				break;
			case R.id.sdcBT:
				System.out.println("--------->保存到SD卡中");
				service.saveToSD(name,content);
				break;
			}
			
			Toast.makeText(getApplicationContext(), "保存成功", 1).show();
		}catch(Exception e){
			e.printStackTrace();
			Toast.makeText(getApplicationContext(), "保存失敗", 1).show();
		}
		
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


2、FileService

package com.example.filetest;

import java.io.FileOutputStream;

import android.content.Context;
import android.os.Environment;

public class FileService {

	private Context context;
	
	public FileService(Context context){
		this.context = context;
	}
	public void saveToSD(String name, String content) throws Exception{
		/**
		 * 創建輸出流指定SD卡所在的位置
		 * Environment.getExternalStorageDirectory():獲取SD卡的位置,為/mnt/sdcard
		 * 
		 */
		FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() + "/" + name);
		fos.write(content.getBytes());
		fos.close();
	}

	
	public void saveToRom(String name, String content) throws Exception{
		/**
		 * 如果打開成功,會在/data/data/包名/下創建愛你一個files目錄,並把文件放在裡面
		 * 
		 * Context.MODE_PRIVATE: 只有自己能訪訪問所創建的文件
		 * Context.MODE_WORLD_READABLE : 全世界都可以讀,也就是說,誰都可以讀
		 * Context.MODE_WORLD_WRITEABLE : 全世界都可以寫,也就是說,誰都可以寫.
		 * Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE: 全世界都可以進行讀寫...
		 * Context.MODE_APPEND: 私有 && 只能追加
		 * 
		 * 創建的時候設置成了Context.MODE_PRIVATE,這時候,別的程序想讀想寫都不可以了,只能是他自己進行讀寫...
		 */
		FileOutputStream fos = context.openFileOutput(name, Context.MODE_WORLD_READABLE);//打開 /data/data/應用的報名/的一個文件
		fos.write(content.getBytes());//往ROM中寫內容不需要權限
		fos.close();
		
	}
	
	
}


3、FileTest(用於測試)

package com.example.filetest;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import android.content.Context;
import android.test.AndroidTestCase;

public class FileTest extends AndroidTestCase {

	/**
	 * 自己讀(正常結果是:可以成功).用來測試Context.MODE_PRIVATE是否正確作用
	 * @throws Exception
	 */
	public void testRead() throws Exception{
		FileInputStream fis = getContext().openFileInput("wr.txt");
//		FileInputStream in = new FileInputStream("/data/data/com.exmaple.filetest/files/hjd.txt");//這種寫法和上面那種寫法是等價的
		
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len;
		while((len = fis.read(buffer)) != -1){
			baos.write(buffer,0,len);
		}
		
		fis.close();
		baos.close();
		
		String content = new String(baos.toByteArray());
		System.out.println("---->content: " + content);
	}
	
	
	public void testWrite() throws Exception{
		FileOutputStream fos = new FileOutputStream("/data/data/com.example.filetest/files/hjd.txt");
		
		String content = "hahahahah";
		fos.write(content.getBytes());
		fos.close();
	}
	
}


二、


Context的幾種MODE其實可以從DDMS中的/data/data/應用名/files/文件可以看到其效果

\


[?楗╧y源碼下載:http://download.csdn.net/detail/caihongshijie6/7613405






  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved