Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發系列(五):Android應用中文件的保存與讀取

Android開發系列(五):Android應用中文件的保存與讀取

編輯:關於Android編程

在本篇博客中,我們要實現在Android中“新建文件”和“讀取文件”:

目標界面:\

在輸入文件名稱之後,輸入文件內容,點擊保存,可以保存成為一個文檔


<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ytfPyKOsztLDx8/IvajBotK7uPZBbmRyb2lkIFByb2plY3TP7sS/o6zP7sS/w/uzxqO6RmlsZaGjPC9wPgo8cD7Iu7rzo6zO0sPH0OjSqs/IyrXP1sS/serK08281tC1xL3nw+ajujwvcD4KPHA+seC8rXN0cmluZ3MueG1szsS8/qO6PC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;"> Hello World, FileActivity! 文件操作 文件名稱 文件內容 保存 保存完成 保存失敗 編輯:main.xml文件:



      
      
       
       
       
由此,我們就把界面構造完成了,接下來就是編寫java代碼(關於界面編寫過程不再詳細說明)。


然後,我們要編輯FileActivity.java(代碼具體解釋在程序中):

package cn.itcast.files;

import cn.itcast.fservice.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class FileActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); //實現布局頁面的跳轉
        Button button = (Button)this.findViewById(R.id.button); //獲取Button屬性
        button.setOnClickListener(new ButtonClickListener()); //為Button設置監聽器
    }
    /**
     * Button點擊事件監聽器實現
     * @author hc
     *
     */
    private final class ButtonClickListener implements View.OnClickListener{

		@Override
		public void onClick(View v) { //生成默認的方法
			EditText filenameText = (EditText)findViewById(R.id.filename); //獲得“文件名稱”輸入框對象
			EditText contentText = (EditText)findViewById(R.id.filecontent); //獲得“文件內容”輸入框對象
			String filename = filenameText.getText().toString(); //獲得輸入的“文件名稱”
			String content = contentText.getText().toString(); //獲得輸入的“文件內容”
		
			//new一個FileService對象,getApplicationContext()返回應用的上下文,生命周期是整個應用,應用摧毀它才摧毀
			FileService service = new FileService(getApplicationContext()); 
			try {
				service.save(filename,content); //調用save()方法保存文件
				Toast.makeText(getApplicationContext(), R.string.success, 1).show(); //調用一個Toast呈現一個“保存完成”的消息
			} catch (Exception e) {
				Toast.makeText(getApplicationContext(), R.string.fail, 1).show(); //調用Toast對象呈現一個“保存失敗”的消息
				e.printStackTrace();
			}
			
			
		}
    	
    }
    
}


在FileActivity.java中我們用到了一個類FileService.java,他提供了寫入文件write()和讀取文件read()方法。

因此,我們需要建立一個FileService.java類:

package cn.itcast.fservice;

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

import android.content.Context;

public class FileService {
	private Context context;
		
	public FileService(Context context) {
			super();
			this.context = context;
		}
	/**
	 * 寫入文件和關閉文件
	 * @param content 寫入內容
	 * @param outStream 輸出流
	 * @throws IOException
	 */
	private void write(String content, FileOutputStream outStream)
	throws IOException {
			outStream.write(content.getBytes());
			outStream.close();
	}
	
	/**
	 * 保存文件
	 * @param filename 文件名稱
	 * @param content 文件內容
	 * @throws Exception 
	 */
	public void save(String filename, String content) throws Exception {
		//私有操作模式:創建出來的文件只能被本應用訪問,其他應用無法訪問該文件。
		//另外采用私有操作模式創建的文件,寫入文件中的內容會覆蓋源文件內容
		FileOutputStream outStream = context.openFileOutput(filename,Context.MODE_PRIVATE); //采用私有操作模式打開輸出流	
		write(content, outStream);
	}
	
	/**
	 * 讀取文件內容
	 * @param filename 文件名稱
	 * @return 文件內容
	 * @throws Exception
	 */
	public String read(String filename)throws Exception{
		FileInputStream inStream = context.openFileInput(filename);
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len = 0;
		//讀完返回-1,未讀完返回讀了多少數據
		while((len = inStream.read(buffer)) != -1){
			outStream.write(buffer, 0 , len);
		}
		byte[] data = outStream.toByteArray();
		return new String(data);
	
	}
	
	
	
}

到了這裡,我們就已經把功能實現了,接下來我們把工程部署到Android模擬器中,
測試一下:

\

可以看到,我們文件已經是保存完成了,在這裡我們需要找到這個文件被保存在了哪裡。


首先,我們需要打開File Explorer視圖:

\
我們可以在data—>data—>cn.itcast.files(這個是工程所在的包)—>files這個目錄下邊,找到Test.txt文件,然後我們把它導出到桌面

可以看到裡邊的內容就是我們輸入的內容。


說到這裡,文件的保存已經介紹完畢了,接下來我們要介紹一下文件的讀取:

我們需要建立一個測試文件,建立測試文件需要首先配置AndroidManifest.xml(關於這個文件的配置請見Android開發系列(四),這就就不再繼續配置了)

我們建立一個測試類:FileServiceTest.java(繼承AndroidTestCase類):

package cn.itcast.test;

import cn.itcast.fservice.FileService;
import android.test.AndroidTestCase;
import android.util.Log;

public class FileServiceTest extends AndroidTestCase {
	private static final String TAG = "FileServiceTest"; //設置一個TAG
		public void testRead() throws Throwable{
			FileService service = new FileService(this.getContext());
			String result = service.read("Test.txt"); //讀取文件Test.txt
			Log.i(TAG, result); //把得到的文件的內容result交給TAG。然後我們就可以在LogCat界面中查看得到了
		}	
}
可以查看如下:




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