編輯:Android開發實例
在Android系統中,這些文件保存在 /data/data/PACKAGE_NAME/files 目錄下。
數據讀取
public static String read(Context context, String file) { String data = ""; try { FileInputStream stream = context.openFileInput(file); StringBuffer sb = new StringBuffer(); int c; while ((c = stream.read()) != -1) { sb.append((char) c); } stream.close(); data = sb.toString(); } catch (FileNotFoundException e) { } catch (IOException e) { } return data; }
從代碼上,看起來唯一的不同就是文件的打開方式了: context.openFileInput(file); Android中的文件讀寫具有權限控制,所以使用context(Activity的父類)來打開文件,文件在相同的Package中共享。這裡的 Package的概念同Preferences中所述的Package,不同於Java中的Package。
數據寫入
public static void write(Context context, String file, String msg) { try { FileOutputStream stream = context.openFileOutput(file, Context.MODE_WORLD_WRITEABLE); stream.write(msg.getBytes()); stream.flush(); stream.close(); } catch (FileNotFoundException e) { } catch (IOException e) { } }
在這裡打開文件的時候,聲明了文件打開的方式。
一般來說,直接使用文件可能不太好用,尤其是,我們想要存放一些瑣碎的數據,那麼要生成一些瑣碎的文件,或者在同一文件中定義一下格式。其實也可以將其包裝成Properties來使用:
public static Properties load(Context context, String file) { Properties properties = new Properties(); try { FileInputStream stream = context.openFileInput(file); properties.load(stream); } catch (FileNotFoundException e) { } catch (IOException e) { } return properties; } public static void store(Context context, String file, Properties properties) { try { FileOutputStream stream = context.openFileOutput(file, Context.MODE_WORLD_WRITEABLE); properties.store(stream, ""); } catch (FileNotFoundException e) { } catch (IOException e) { } }
/Chapter09_Data_02/src/com/amaker/test/MainActivity.java
package com.amaker.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private static final String FILE_NAME="temp.txt";
private Button b1,b2;
private EditText et1,et2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = (Button)findViewById(R.id.Button01);
b2 = (Button)findViewById(R.id.Button02);
et1 = (EditText)findViewById(R.id.EditText01);
et2 = (EditText)findViewById(R.id.EditText02);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
write(et1.getText().toString());
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
et2.setText(read());
}
});
}
private String read(){
try {
FileInputStream fis = openFileInput(FILE_NAME);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
return new String(buffer);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private void write(String content){
try {
FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
fos.write(content.getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}/Chapter09_Data_02/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="File Test" />
<EditText android:text="" android:id="@+id/EditText01"
android:layout_width="fill_parent" android:layout_height="wrap_content" android:height="100px"></EditText>
<Button android:id="@+id/Button01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Write"></Button>
<EditText android:text="" android:id="@+id/EditText02"
android:layout_width="fill_parent" android:layout_height="wrap_content" android:height="100px"></EditText>
<Button android:id="@+id/Button02" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Read"></Button>
</LinearLayout>/Chapter09_Data_02/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amaker.test"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
學習目的: 1、掌握在Android中如何建立EditText2、掌握EditText的常用屬性3、掌握EditText焦點的事件、按鍵的事件(監聽器) 介紹:
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
前文介紹了Android中MediaPlayer用法的時候稍微介紹了SurfaceView,SurfaceView由於可以直接從內存或者DMA等硬件接口取得圖像數
一般來說。熟悉Android程序設計的人都知道Android有三個基礎組件Activity,Service和BroadcastReceiver,他們都是依賴Int