前言

android读取文件中文出现乱码的原因无非就是,读取文件的字符格式与写如文件的格式不一致。因此,避免中文乱码,要在写入文件的时候按照一定的格式写入,读取的时候按照一定的格式读取。这样对应就不会出现乱码。对于其它的文本读取,在不知道何种格式的时候,可以先读取相应的文件信息,再进行相应的转码。
下面是一个避免中文读写出现乱码的类。
RWFile.java
package com.rwfile.main;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import android.os.Environment;
public class RWFile {
/**
* 判断sdcard是否存在
*
* @return
*/
public static boolean isSdcard() {
String status = Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED)) {
return true;
} else {
return false;
}
}
/**
* 读取文件内容
*
* @param filePathAndName
* @return
*/
public static String readFile(String filePathAndName) {
String fileContent = null;
try {
File f = new File(filePathAndName);
if (f.isFile() && f.exists()) {
fileContent = "";
InputStreamReader read = new InputStreamReader(
new FileInputStream(f), "UTF-8");
BufferedReader reader = new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
fileContent += line;
}
read.close();
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return fileContent;
}
/**
* 写入文件内容
*
* @param filePathAndName
* @param fileContent
*/
public static boolean writeFile(String filePathAndName, String fileContent) {
try {
File f = new File(filePathAndName);
if (!f.exists()) {
f.createNewFile();
}
// 覆盖文件
OutputStreamWriter write = new OutputStreamWriter(
new FileOutputStream(f), "UTF-8");// 覆盖文件
// 追加文件
// OutputStreamWriter write = new OutputStreamWriter(
// new FileOutputStream(f, true), "UTF-8"); // 追加文件
BufferedWriter writer = new BufferedWriter(write);
writer.write(fileContent);
writer.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}
根据这个类写的一个测试的Demo项目。
MainActivity.java
package com.rwfile.main;
import java.io.File;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText input = (EditText) findViewById(R.id.input);
final TextView content = (TextView) findViewById(R.id.content);
Button write = (Button) findViewById(R.id.write);
write.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (!RWFile.isSdcard()) {
Toast.makeText(MainActivity.this, "无法找到sdcard卡",
Toast.LENGTH_LONG).show();
} else {
String sdcard = Environment.getExternalStorageDirectory()
.toString() + File.separator;
System.out.println("write path:" + sdcard + "test.txt");
RWFile.writeFile(sdcard + "test.txt", input.getText()
.toString());
}
}
});
Button read = (Button) findViewById(R.id.read);
read.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (!RWFile.isSdcard()) {
Toast.makeText(MainActivity.this, "无法找到sdcard卡",
Toast.LENGTH_LONG).show();
} else {
String sdcard = Environment.getExternalStorageDirectory()
.toString() + File.separator;
System.out.println("read path:" + sdcard + "test.txt");
String str = RWFile.readFile(sdcard + "test.txt");
if (str == null)
Toast.makeText(MainActivity.this, "无法找到test.txt文件",
Toast.LENGTH_LONG).show();
else {
content.setText(str);
}
}
}
});
}
@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;
}
}
activy_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/input" /> <EditText android:id="@+id/input" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/chinese" android:text="@string/chinese"/> <Button android:id="@+id/write" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/write"/> <Button android:id="@+id/read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/read"/> <TextView android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
注意:需要加入文件读写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
避免读写中文乱码
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# android
# 中文乱码
# 读取中文乱码
# 请求中文乱码
# Android Studio的中文乱码问题解决方法
# android POST数据遇到的UTF-8编码(乱码)问题解决办法
# Android编程向服务器发送请求时出现中文乱码问题的解决方法
# Android字符串和十六进制相互转化出现的中文乱码问题
# Android读取本地json文件的方法(解决显示乱码问题)
# 出现乱码
# 是一个
# 要在
# 这篇文章
# 谢谢大家
# 是否存在
# 有疑问
# read
# reader
# exists
# catch
# readLine
# line
# close
# UTF
# param
# filePathAndName
# true
# false
# readFile
相关文章:
如何在局域网内绑定自建网站域名?
如何快速生成橙子建站落地页链接?
建站OpenVZ教程与优化策略:配置指南与性能提升
建站三合一如何选?哪家性价比更高?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
如何在阿里云部署织梦网站?
如何高效搭建专业期货交易平台网站?
南宁网站建设制作定制,南宁网站建设可以定制吗?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
建站之星后台管理:高效配置与模板优化提升用户体验
网站制作新手教程,新手建设一个网站需要注意些什么?
如何快速搭建高效WAP手机网站?
如何快速选择适合个人网站的云服务器配置?
如何选择高效便捷的WAP商城建站系统?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何快速启动建站代理加盟业务?
如何在IIS管理器中快速创建并配置网站?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何解决ASP生成WAP建站中文乱码问题?
如何零基础开发自助建站系统?完整教程解析
如何用免费手机建站系统零基础打造专业网站?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何基于云服务器快速搭建个人网站?
制作网页的网站有哪些,电脑上怎么做网页?
如何在万网开始建站?分步指南解析
如何快速生成凡客建站的专业级图册?
C#如何在一个XML文件中查找并替换文本内容
建站之星如何实现网站加密操作?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
网站制作模板下载什么软件,ppt模板免费下载网站?
如何在IIS服务器上快速部署高效网站?
如何在香港服务器上快速搭建免备案网站?
如何有效防御Web建站篡改攻击?
建站之星如何通过成品分离优化网站效率?
如何在腾讯云服务器快速搭建个人网站?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
已有域名和空间如何搭建网站?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
宿州网站制作公司兴策,安徽省低保查询网站?
Python文件管理规范_工程实践说明【指导】
建站之星如何优化SEO以实现高效排名?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
常州企业建站如何选择最佳模板?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
*请认真填写需求信息,我们会在24小时内与您取得联系。