Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android開發往SDK上追加文件

android開發往SDK上追加文件

編輯:關於Android編程

android手機內存本來就不大,要是老把數據放在手機裡,很明顯會讓手機的使用者體驗到什麼是“卡”,所以,我們把數據要放到SD卡中,以減少手機內存的使用,本文僅寫入文件,不對讀文件進行說明。好,go!

第一步:新建android項目,命名為Test

\

next -> next ..一切默認

第二步:在AndroidManifest.xml中添加權限

往往是用到什麼再最後加權限,既然現在的目的很明確,就直接將文件創建刪除權限以及SD卡的讀寫權限一並添加上了<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KCjxwcmUgY2xhc3M9"brush:java;">

別忘了,這些權限是加在標簽對的外面

第三步:創建界面,默認已經生成了layout文件 activity_main.xml 

現在要實現的功能只是以追加形式寫文件並把文件保存到SD卡中,對界面沒什麼需求,界面不改了,默認顯示出hello world 吧

第四步:完善代碼

核心功能來了,直接附上代碼吧

MainActivity.JAVA

[java] view plaincopy
  1. package com.example.test;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.FileWriter;
  7. import java.io.IOException;
  8. import java.io.OutputStreamWriter;
  9. import java.io.RandomAccessFile;
  10. import android.app.Activity;
  11. import android.os.Bundle;
  12. import android.os.Environment;
  13. import android.view.Menu;
  14. public class MainActivity extends Activity {
  15. FileOutputStream fos;
  16. FileInputStream fis;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21. String fileName = getSDPath() + "/" + "testYL.txt";
  22. method1(fileName, "I am the new content\n");
  23. method2(fileName, "I am the new content\n");
  24. method3(fileName, "I am the new content\n");
  25. }
  26. /**
  27. * 追加文件:使用FileOutputStream,在構造FileOutputStream時,把第二個參數設為true
  28. *
  29. * @param fileName
  30. * @param content
  31. */
  32. public static void method1(String file, String conent) {
  33. BufferedWriter out = null;
  34. try {
  35. out = new BufferedWriter(new OutputStreamWriter(
  36. new FileOutputStream(file, true)));
  37. out.write(conent);
  38. } catch (Exception e) {
  39. e.printStackTrace();
  40. } finally {
  41. try {
  42. out.close();
  43. } catch (IOException e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. }
  48. /**
  49. * 追加文件:使用FileWriter
  50. *
  51. * @param fileName
  52. * @param content
  53. */
  54. public static void method2(String fileName, String content) {
  55. try {
  56. // 打開一個寫文件器,構造函數中的第二個參數true表示以追加形式寫文件
  57. FileWriter writer = new FileWriter(fileName, true);
  58. writer.write(content);
  59. writer.close();
  60. } catch (IOException e) {
  61. e.printStackTrace();
  62. }
  63. }
  64. /**
  65. * 追加文件:使用RandomAccessFile
  66. *
  67. * @param fileName
  68. * 文件名
  69. * @param content
  70. * 追加的內容
  71. */
  72. public static void method3(String fileName, String content) {
  73. try {
  74. // 打開一個隨機訪問文件流,按讀寫方式
  75. RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
  76. // 文件長度,字節數
  77. long fileLength = randomFile.length();
  78. // 將寫文件指針移到文件尾。
  79. randomFile.seek(fileLength);
  80. randomFile.writeBytes(content);
  81. randomFile.close();
  82. } catch (IOException e) {
  83. e.printStackTrace();
  84. }
  85. }
  86. public String getSDPath() {
  87. File sdDir = null;
  88. boolean sdCardExist = Environment.getExternalStorageState().equals(
  89. android.os.Environment.MEDIA_MOUNTED); // 判斷sd卡是否存在
  90. if (sdCardExist) {
  91. sdDir = Environment.getExternalStorageDirectory();// 獲取跟目錄
  92. }
  93. return sdDir.toString();
  94. }
  95. @Override
  96. public boolean onCreateOptionsMenu(Menu menu) {
  97. // Inflate the menu; this adds items to the action bar if it is present.
  98. getMenuInflater().inflate(R.menu.activity_main, menu);
  99. return true;
  100. }
  101. }

    經本人聯想630真機測試,完全通過。

    至此,要對以上代碼做一些說明

      1.RandomAccessFile是用來訪問那些保存數據記錄的文件的,這樣你就可以用seek( )方法來訪問記錄,並進行讀寫了。這些記錄的大小不必相同;但是其大小和位置必須是可知的。

      2.細心的朋友會發現,中文存入之後會出現亂碼,亂碼的問題就不在這進行解決了,先寫到這吧

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