android开发往SDK上追加文件

原创 2013年12月02日 16:39:55

android手机内存本来就不大,要是老把数据放在手机里,很明显会让手机的使用者体验到什么是“卡”,所以,我们把数据要放到SD卡中,以减少手机内存的使用,本文仅写入文件,不对读文件进行说明。好,go!

第一步:新建android项目,命名为Test

next -> next ..一切默认

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

往往是用到什么再最后加权限,既然现在的目的很明确,就直接将文件创建删除权限以及SD卡的读写权限一并添加上了

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

别忘了,这些权限是加在<application>标签对的外面

第三步:创建界面,默认已经生成了layout文件 activity_main.xml 

现在要实现的功能只是以追加形式写文件并把文件保存到SD卡中,对界面没什么需求,界面不改了,默认显示出hello world 吧

 

第四步:完善代码

核心功能来了,直接附上代码吧

MainActivity.JAVA

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

 

经本人联想630真机测试,完全通过。

至此,要对以上代码做一些说明

  1.RandomAccessFile是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。

  2.细心的朋友会发现,中文存入之后会出现乱码,乱码的问题就不在这进行解决了,先写到这吧

 

android上如何实现后台日志记录并写文件到sd卡

对于安卓的日志,我们通常的做法是通过 第三方的平台来实现日志的保存,例如腾讯的Buglay 和友盟统计 来实现,这些方法可以帮我们快速的统计各种bug以及其他信息,但是至少有一点不太好就是当涉及到一些...
  • xk7298
  • xk7298
  • 2017年05月29日 10:54
  • 1312

android:Log日志保存到本地

大家在开发一个应用进行调试的时候,查看log日志信息是必不可少的,因此log信息的保存是非常有必要的。下面是log日志保存的一个工具类,仅供参考。 package com.dandy.util; ...
  • tabolt
  • tabolt
  • 2015年11月20日 15:06
  • 6087

java追加内容到文本文件中

import java.util.List; import java.util.ArrayList; import javax.swing.*; import java.io.BufferedR...
  • hpuyancy
  • hpuyancy
  • 2011年12月31日 19:49
  • 9007

java三种方法追加内容到文件末尾

package org.outman.dms.server; import java.io.BufferedWriter; import java.io.FileOutputSt...
  • luman1991
  • luman1991
  • 2017年02月08日 14:48
  • 165

Java往文件追加内容

使用FileWriter //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件             FileWriter writer = new FileWriter(...
  • csdn_huangyumin
  • csdn_huangyumin
  • 2015年10月14日 20:01
  • 220

poi追加内容

用poi往excel中追加内容 package com; import java.io.File; import java.io.FileInputStream; import java.io...
  • baidu_18607183
  • baidu_18607183
  • 2016年04月11日 20:21
  • 1538

Matlab 往文件中以需加的方式写入数据

由于我想以续加的方式往里边写数据,因此我在内层循环中不断的
  • woainiwss
  • woainiwss
  • 2014年11月03日 18:58
  • 1893

给pdf追加内容

package cn.com.bmsoft.util; import java.io.FileOutputStream; import java.net.URL; import com.lowagi...
  • xuxu198899223
  • xuxu198899223
  • 2015年06月06日 14:41
  • 919

安卓中常用的两种追加文本内容到文件的方法

安卓中的文件的操作基本沿用Java的方法,但是有时候需要结合手机的特性进行优化。这次的需求是要求将用户输入的内容保存到本地文件,是追加到文件中,每次写入的内容都不同,代码和功能都没难度,直接上代码。 ...
  • qiantanlong
  • qiantanlong
  • 2017年08月09日 10:08
  • 380

[C#] 文本写入文件,追加写入文件

有些基础的东西,该用的时候还总是会忘记,例如说这个写入文件,俗话说熟能生巧,恩恩, 多记下来以后查看方便;写入文件和这个对象 StreamWriterusing (StreamWriter sw = ...
  • lujianfeiccie2009
  • lujianfeiccie2009
  • 2011年06月08日 13:01
  • 13908
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android开发往SDK上追加文件
举报原因:
原因补充:

(最多只允许输入30个字)