編輯:關於Android編程
android文件的讀寫主要分為兩個方面,一個是將內容寫入本應用的data文件夾中,另一個是將內容寫入到sdcard中。兩者都使用I/O流的讀寫技術。
下面具體具體介紹這兩方面的內容:
一。將內容寫入本應用中:
[html]
/**
* @description:將內容保存到內置存儲中
* @author:Administrator
* @return:boolean
* @param fileName
* 文件名
* @param fileContent
* 文件內容
* @param context
* 上下文對象
* @return
*/
public static boolean fileSaveApp(String fileName, String fileContent,
Context context) {
try {
// 用android提供的輸出流來將內容寫入到文件中,注意mode的用途
FileOutputStream fos = context.openFileOutput(fileName,
context.MODE_APPEND);
fos.write(fileContent.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
/**
* @description:將內容保存到內置存儲中
* @author:Administrator
* @return:boolean
* @param fileName
* 文件名
* @param fileContent
* 文件內容
* @param context
* 上下文對象
* @return
*/
public static boolean fileSaveApp(String fileName, String fileContent,
Context context) {
try {
// 用android提供的輸出流來將內容寫入到文件中,注意mode的用途
FileOutputStream fos = context.openFileOutput(fileName,
context.MODE_APPEND);
fos.write(fileContent.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
注意android的上下文對象context在這個方法中起的的作用(可以用它來打開一個輸出流,或者打開一個輸入流),還有文件的寫入模式。這裡用的是文件的追加模式。數據時只可被本應用操作的。
二。將數據寫入sdcard中
[html]
/**
* @description:將內容寫入到sdcard的文件當中
* @author:Administrator
* @return:boolean
* @param fileName
* 文件名
* @param fileContent
* 文件內容
* @param path
* 文件路徑
* @return
*/
public static boolean fileSave(String fileName, String fileContent,
File path) {
File file = new File(path, fileName);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileOutputStream fos = null;
int count = 0;
try {
fos = new FileOutputStream(file);
count = fileContent.getBytes().length;
fos.write(fileContent.getBytes(), 0, count);
fos.close();
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
/**
* @description:將內容寫入到sdcard的文件當中
* @author:Administrator
* @return:boolean
* @param fileName
* 文件名
* @param fileContent
* 文件內容
* @param path
* 文件路徑
* @return
*/
public static boolean fileSave(String fileName, String fileContent,
File path) {
File file = new File(path, fileName);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileOutputStream fos = null;
int count = 0;
try {
fos = new FileOutputStream(file);
count = fileContent.getBytes().length;
fos.write(fileContent.getBytes(), 0, count);
fos.close();
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
注意這個方法中的path參數指的是sdcard的路徑:=Environment.getExternalStorageDirectory();
注意寫入數據的時候需要判斷sdcard是否存在是否可寫:Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
最後需要注意如果要向sdcard寫入數據必須在manifest.xml加入權限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />第一個權限是指對sdcard可寫,第二個權限是指可以在sdcard中建立和刪除文件。
最後將從應用的data中讀取數據的方法也寫進來:
[html]
/**
* @description:讀取本應用data文件夾中文件的內容(如果要讀取sdcard中的文件時一定要去判斷sdcard是否存在,並且是可讀的)
* @author:Administrator
* @return:String 文件的內容
* @param fileName
* 文件名
* @param context
* 上下文對象
* @return
*/
public static String readFile(String fileName, Context context) {
String str = "";
try {
FileInputStream fis = context.openFileInput(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) != -1) {
// 用字節輸出流將讀到的內容寫入到內存中
bos.write(buffer, 0, len);
}
// 將輸出流中的數據轉換為String
str = new String(bos.toByteArray(), "utf-8");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
/**
* @description:讀取本應用data文件夾中文件的內容(如果要讀取sdcard中的文件時一定要去判斷sdcard是否存在,並且是可讀的)
* @author:Administrator
* @return:String 文件的內容
* @param fileName
* 文件名
* @param context
* 上下文對象
* @return
*/
public static String readFile(String fileName, Context context) {
String str = "";
try {
FileInputStream fis = context.openFileInput(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) != -1) {
// 用字節輸出流將讀到的內容寫入到內存中
bos.write(buffer, 0, len);
}
// 將輸出流中的數據轉換為String
str = new String(bos.toByteArray(), "utf-8");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
這裡就不再介紹從sdcard中讀取文件內容的方法了。
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。
如果希望文件被其他應用讀和寫,可以傳入:
openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
apk中包含的內容使用apktool直接反編譯apk好吧,不管怎樣,反正是報異常了。有人說是apktool的版本不是最新導致的,我也難得去查找原因了,以前這樣直接反編譯也
大多App都會使用到的基本控件 ——- Listiew,特別像新聞浏覽類的比如說“今日關注”,或者“應用寶&r
因為最近有人問我怎麼保存HttpClient的Cookie, 所以這裡寫下, 順便記錄總結吧. 當然, 有Android網絡編程經歷的童鞋一看就懂喇~ 就不多說
1、Service的種類按運行地點分類: 類別 區別 優點 缺點 應用