当前位置:  编程技术>移动开发

Android中读取中文字符的文件与文件读取相关介绍

    来源: 互联网  发布时间:2014-10-18

    本文导语:  一、如何显示assets/license.txt(中文)的内容? (1)方法1:InputStream.available()得到字节数,然后一次读取完。 代码如下: private String readUserAgreementFromAsset(String assetName) { String content =""; try { InputStream is= getAssets().open(assetName); if (is !=...

一、如何显示assets/license.txt(中文)的内容?
(1)方法1:InputStream.available()得到字节数,然后一次读取完。
代码如下:

private String readUserAgreementFromAsset(String assetName) {
String content ="";
try {
InputStream is= getAssets().open(assetName);
if (is != null){
DataInputStream dIs = newDataInputStream(is);
intlength = dIs.available();
byte[] buffer = new byte[length];
dIs.read(buffer);
content= EncodingUtils.getString(buffer, "UTF-8");
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
}

(2)方法2:用BufferedReader.readLine()行读取再加换行符,最后用StringBuilder.append()连接成字符串。
A.以下是先行读取再转码UTF8:
代码如下:

private String readUserAgreementFromAsset(String assetName) {
StringBuilder sb = newStringBuilder("");
String content ="";
try {
InputStream is= getAssets().open(assetName);
if (is != null){
BufferedReader d = newBufferedReader(new InputStreamReader(is));
while (d.ready()) {
sb.append(d.readLine() +"n");
}
content =EncodingUtils.getString(sb.toString().getBytes(), "UTF-8");
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
}

B.以下是InputStreamReader先指定以UTF8读取文件,再进行读取读取操作:
代码如下:

private String readUserAgreementFromAsset(String assetName) {
StringBuilder sb = newStringBuilder("");
String content ="";
try {
InputStream is= getAssets().open(assetName);
if (is != null){
BufferedReaderd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while(d.ready()) {
sb.append(d.readLine() +"n");
}
content= sb.toString();
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
}

另外,UTF8转码也可以用new String(buffer, “utf-8”)。
(3)替代方法3:将license.txt内容作为string.xml的string,如:
用户协议
n n一、服务条款的确认和接纳
n…

需要注意的是:string里需要加n作为换行符,原来txt里的换行符在取得string后无效。
不可取方法4:每次读取4096字节,以UTF8转码,最后连接字符串。因为汉字可能被截断,导致4096的倍数附近的中文可能出现乱码。
代码如下:

private String readUserAgreementFromAsset(String assetName) {
StringBuilder sb = newStringBuilder("");
String content ="";
try {
InputStream is= getAssets().open(assetName);
if (is != null){
DataInputStream dIs = new DataInputStream(is);
byte[] buffer = new byte[1024*4];
int length = 0;
while ((length = dIs.read(buffer)) >0) {
content =EncodingUtils.getString(buffer, 0, length, "UTF-8");
sb.append(content);
}
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}

http://www./kf/201207/140312.html
http://blog.sina.com.cn/s/blog_933d50ba0100wq1h.html
二、Android中读写文件
(1) 从resource中的raw文件夹中获取文件并读取数据(资源文件只能读不能写,resrawtest.txt)
代码如下:

String res = "";
try{
InputStream in = getResources().openRawResource(R.raw.test);
int length = in.available();
byte [] buffer = newbyte[length];
in.read(buffer);
res = EncodingUtils.getString(buffer,"UTF-8");//选择合适的编码,如果不调整会乱码
in.close();
}catch(Exception e){
e.printStackTrace();
}

(2) 从asset中获取文件并读取数据(资源文件只能读不能写,assetstest.txt)
与raw文件夹类似,只是:
InputStream is = getAssets().open(“test.txt”);
(3) 私有文件夹下的文件存取(/data/data/包名/files/test.txt)
使用openFileOutput写文件:
代码如下:

public void writeFileData(String fileName,String message){
try{
FileOutputStream fout =openFileOutput(fileName,MODE_PRIVATE);
byte [] bytes =message.getBytes();
fout.write(bytes);
fout.close();
}
catch(Exception e){
e.printStackTrace();
}
}

使用openFileInput读文件:
代码如下:

public String readFileData(String fileName){
String str = “”;
try{
FileInputStream fin =openFileInput(fileName);
int length = in.available();
byte [] bytes = newbyte[length];
fin.read(bytes);
str = EncodingUtils.getString(bytes,"UTF-8");
fin.close();
}
catch(Exception e){
e.printStackTrace();
}
return str;
}

(4) sdcard目录下的文件存取(/mnt/sdcard/)
使用FileOutputStream写文件:
代码如下:

public void writeFile2Sdcard(String fileName,String message){
try{
FileOutputStream fout = new FileOutputStream(fileName);
byte [] bytes =message.getBytes();
fout.write(bytes);
fout.close();
}
catch(Exception e){
e.printStackTrace();
}
}

使用FileInputStream读文件:
代码如下:

public String readFileFromSdcard(String fileName){
String res="";
try{
FileInputStream fin = newFileInputStream(fileName);
int length =fin.available();
byte [] buffer = newbyte[length];
fin.read(buffer);
res =EncodingUtils.getString(buffer, "UTF-8");
fin.close();
}
catch(Exception e){
e.printStackTrace();
}
return res;
}

http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6017.html
http://blog.sina.com.cn/s/blog_4d25c9870100qpax.html

    
 
 

您可能感兴趣的文章:

  • Android 元数据读取实用库 android-metadata
  • android读取assets文件示例
  • android读取raw文件示例
  • android读取sdcard路径下的文件的方法
  • Android读取用户号码,手机串号,SIM卡序列号的实现代码
  • Android 读取Properties配置文件的小例子
  • 基于android中读取assets目录下a.txt文件并进行解析的深入分析
  • android读取Assets图片资源保存到SD卡实例
  • 板子上android读取sd问题
  • android读写sd卡操作写入数据读取数据示例
  • python读取Android permission文件
  • android读取短信示例分享
  • Android控件ListView用法(读取联系人示例代码)
  • android将图片转换存到数据库再从数据库读取转换成图片实现代码
  • Android提高之SQLite分页读取实现方法
  • android按行读取文件内容的几个方法
  • 解析Android资源文件及他们的读取方法详解
  • Android创建文件实现对文件监听示例
  • Android文件管理器 雪梦文件管理器
  • Android中删除文件以及文件夹的命令记录
  • Android文件管理器 Astro
  • Android文件管理器 AndFileManage
  • android通过配置文件设置应用安装到SD卡上的方法
  • android开发教程之系统资源的使用方法 android资源文件
  • android保存Bitmap图片到指定文件夹示例
  • Android 工程内嵌资源文件的两种方法
  • android下跑ubuntu下的可执行文件
  • Android递归方式删除某文件夹下的所有文件(.mp3文件等等)
  • android 获取文件的扩展名和去掉文件扩展名的小例子
  • Android 进入设备后台data文件夹的办法
  • android打开rar压缩文件
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Android中文输入法 TouchPal
  • Android 繁体中文输入法
  • Android Studio的中文乱码问题解决方法
  • 在android开发中尽量不要使用中文路径的问题详解
  • Android中文输入法 OpenWnn
  • android TextView设置中文字体加粗实现方法
  • Google Android 官方培训课程中文版
  • Android uses-permission权限列表中文注释版
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍
  • Android 开发环境 Android Studio
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes
  • Android电池监控 Android Battery Dog
  • android开发:“android:WindowTitle”没有对应项no resource
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • Android 将 android view 的位置设为右下角的解决方法
  • Android 2D游戏引擎 Android Angle


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3