android學習筆記6———-數據的存儲與訪問(1)

android為數據存儲提供瞭多種方式:

1.文件

2.SharedPreferences    (主要存儲軟件的配置參數)

3.SQLite數據庫

4.內容提供者(content provider)(對外共享數據時使用)

5.網絡

    首先看對文件的操作,實現的要求:

1.指定保存的文件類型

2.指定保存的文件文本信息

3.讀取指定的文件內容

一、業務bean

[java]
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
 
public class FileService 

    /**
     * 保存數據
     * 
     * @param stream
     * @param content
     * @throws IOException
     */ 
    public static void save(OutputStream stream, String content) 
            throws IOException 
    { 
        stream.write(content.getBytes()); 
        stream.close(); 
    } 
 
    /**
     * 讀取數據
     * 
     * @param inStream
     * @return
     * @throws IOException
     */ 
    public static String read(InputStream inStream) throws IOException 
    { 
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
        int len = -1; 
        byte[] buffer = new byte[1024]; 
        while ((len = inStream.read(buffer)) != -1) 
        { 
            outputStream.write(buffer, 0, len); 
        } 
        byte[] data = outputStream.toByteArray(); 
        inStream.close(); 
        outputStream.close(); 
        return new String(data); 
 
    } 
 

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileService
{
 /**
  * 保存數據
  *
  * @param stream
  * @param content
  * @throws IOException
  */
 public static void save(OutputStream stream, String content)
   throws IOException
 {
  stream.write(content.getBytes());
  stream.close();
 }

 /**
  * 讀取數據
  *
  * @param inStream
  * @return
  * @throws IOException
  */
 public static String read(InputStream inStream) throws IOException
 {
  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  int len = -1;
  byte[] buffer = new byte[1024];
  while ((len = inStream.read(buffer)) != -1)
  {
   outputStream.write(buffer, 0, len);
  }
  byte[] data = outputStream.toByteArray();
  inStream.close();
  outputStream.close();
  return new String(data);

 }

}

 

二、單元測試

[java]
import java.io.InputStream; 
import java.io.OutputStream; 
 
import android.content.Context; 
import android.test.AndroidTestCase; 
import android.util.Log; 
 
import com.luku.file.service.FileService; 
 
public class FileServiceTest extends AndroidTestCase 

    private static final String TAG = "FileServiceTest"; 
 
    /**
     * 保存測試單元
     * 保存在/data/data/包名/files下
     * 
     * @throws Exception
     */ 
    public void testSave() throws Exception 
    { 
         
        OutputStream stream = this.getContext().openFileOutput("123.txt",//文件名稱為123.txt  
                Context.MODE_PRIVATE); 
        FileService.save(stream, "你好");  //文件內容  
    } 
     
    /**
     * 讀取測試單元
     * @throws Exception
     */ 
    public void testRead() throws Exception 
    { 
        InputStream instream = this.getContext().openFileInput("123.txt"); 
        String string = FileService.read(instream); 
        Log.i(TAG, string); 
    } 

import java.io.InputStream;
import java.io.OutputStream;

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

import com.luku.file.service.FileService;

public class FileServiceTest extends AndroidTestCase
{
 private static final String TAG = "FileServiceTest";

 /**
  * 保存測試單元
  * 保存在/data/data/包名/files下
  *
  * @throws Exception
  */
 public void testSave() throws Exception
 {
  
  OutputStream stream = this.getContext().openFileOutput("123.txt",//文件名稱為123.txt
    Context.MODE_PRIVATE);
  FileService.save(stream, "你好");  //文件內容
 }
 
 /**
  * 讀取測試單元
  * @throws Exception
  */
 public void testRead() throws Exception
 {
  InputStream instream = this.getContext().openFileInput("123.txt");
  String string = FileService.read(instream);
  Log.i(TAG, string);
 }
}
 

 

補充:

openFileOutput第二個參數有四種模式,用於控制訪問權限,分別為:

1.Context.MODE_PRIVATE =0                           隻能被創建文件的應用程序讀寫,同名覆蓋

2.Context.MODE_APPEND =32768                   隻能被創建文件的應用程序讀寫,同名追加內容

3.Context.MODE_WORLD_READEBLE =1      能被其他應用程序讀取

4.Context.MODE_WORLD_WRITEABLE =2     能被其他應用程序寫入

 

執行測試單元後可以看到:(前提配置好測試單元)

 

將123.txt傳到桌面

打開可以看到

 

 摘自 奔跑的蝸牛

發佈留言