android开发往SDK上追加文件
2013-12-02 16:39
176 查看
android手机内存本来就不大,要是老把数据放在手机里,很明显会让手机的使用者体验到什么是“卡”,所以,我们把数据要放到SD卡中,以减少手机内存的使用,本文仅写入文件,不对读文件进行说明。好,go!
第一步:新建android项目,命名为Test
next -> next ..一切默认
第二步:在AndroidManifest.xml中添加权限
往往是用到什么再最后加权限,既然现在的目的很明确,就直接将文件创建删除权限以及SD卡的读写权限一并添加上了
别忘了,这些权限是加在<application>标签对的外面
第三步:创建界面,默认已经生成了layout文件 activity_main.xml
现在要实现的功能只是以追加形式写文件并把文件保存到SD卡中,对界面没什么需求,界面不改了,默认显示出hello world 吧
第四步:完善代码
核心功能来了,直接附上代码吧
MainActivity.JAVA
[java] view
plaincopy
package com.example.test;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.RandomAccessFile;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
public class MainActivity extends Activity {
FileOutputStream fos;
FileInputStream fis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String fileName = getSDPath() + "/" + "testYL.txt";
method1(fileName, "I am the new content\n");
method2(fileName, "I am the new content\n");
method3(fileName, "I am the new content\n");
}
/**
* 追加文件:使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true
*
* @param fileName
* @param content
*/
public static void method1(String file, String conent) {
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file, true)));
out.write(conent);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 追加文件:使用FileWriter
*
* @param fileName
* @param content
*/
public static void method2(String fileName, String content) {
try {
// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 追加文件:使用RandomAccessFile
*
* @param fileName
* 文件名
* @param content
* 追加的内容
*/
public static void method3(String fileName, String content) {
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
// 将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getSDPath() {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();// 获取跟目录
}
return sdDir.toString();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
经本人联想630真机测试,完全通过。
至此,要对以上代码做一些说明
1.RandomAccessFile是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。
2.细心的朋友会发现,中文存入之后会出现乱码,乱码的问题就不在这进行解决了,先写到这吧
第一步:新建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
package com.example.test;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.RandomAccessFile;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
public class MainActivity extends Activity {
FileOutputStream fos;
FileInputStream fis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String fileName = getSDPath() + "/" + "testYL.txt";
method1(fileName, "I am the new content\n");
method2(fileName, "I am the new content\n");
method3(fileName, "I am the new content\n");
}
/**
* 追加文件:使用FileOutputStream,在构造FileOutputStream时,把第二个参数设为true
*
* @param fileName
* @param content
*/
public static void method1(String file, String conent) {
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file, true)));
out.write(conent);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 追加文件:使用FileWriter
*
* @param fileName
* @param content
*/
public static void method2(String fileName, String content) {
try {
// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 追加文件:使用RandomAccessFile
*
* @param fileName
* 文件名
* @param content
* 追加的内容
*/
public static void method3(String fileName, String content) {
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
// 将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public String getSDPath() {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();// 获取跟目录
}
return sdDir.toString();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
经本人联想630真机测试,完全通过。
至此,要对以上代码做一些说明
1.RandomAccessFile是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。
2.细心的朋友会发现,中文存入之后会出现乱码,乱码的问题就不在这进行解决了,先写到这吧
相关文章推荐
- eclipse + android sdk开发环境中svn配置(可避免不必要的文件提交)
- Android SDK NDK JNI和so文件开发
- android开发之Eclipse升级SDK及ADT
- Android内核开发:系统编译输出的镜像文件
- android eclipse基础开发环境搭建--最新安卓6.0 SDK
- Android开发编程Lint工具应用布局Xml文件
- android开发-------案例十(文件存储--sharedpreferences)
- android sdk eclipse 开发环境配置
- Animations(通过XML 文件控制)-- MarsChen Android 开发教程笔记
- Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- MyEclipse Android SDK2.3开发环境搭建、配置
- Android软件开发之制作第三方数据库与读取文件中数据库详解
- 手动下载Android开发SDK
- Android编程开发之打开文件的Intent及使用方法
- Android开发之《制作自己的su文件》
- 【android开发】手写签名系统的设计与实现之实现解析pdf文件(二)
- NDK开发之Android Studio生成.h头文件的方法
- 收集整理Android开发所需的Android SDK
- Android开发: 获得某一个类型文件的打开方式
- android如何让自己开发的播放器成为可供文件选择的播放器