-
读文件时读出一些垃圾信息.解决办法,还也没有其他的办法10
比如: 在/res/raw/xia.txt 文件内容为: ##随机中文字符串##
运行时 会发现在logcat里出来的文字不仅仅是乱码。。。 而且乱码前后会附加一些垃圾信息:
07-24 08:54:56.816: DEBUG/DataReadThread(3105): ï##è¿æ¯ä¸ æå 容##ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀè¿æ¯ä¸ æå 容##ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ
乱码问题还不是什么问题.
主要是 :读出来的东西 不正确啊!!!出现了一些垃圾信息
看到没? 两个##号 的前后 有些垃圾信息。而且##出现了4次。 按理说 只出现 2次啊。
不信你们 试试?
如果不 添加类似 ## 占位符,都读不出来 正确的信息。
下面是程序代码,不信你们试试? 我用的是1.5平台
InputStream inputStream = this.getResources().openRawResource(R.raw.xxxx);
StringBuffer tempStr = new StringBuffer();
byte[] buffer=new byte[1024];
int size=buffer.length;
while(size!=-1 || size>=buffer.length){
size=inputStream.read(buffer);
tempStr.append(new String(buffer, "UTF-8"));
}
String allCaipus = tempStr.toString();
String splitStr = "##"; // 占位符
// 删除占位符前的字符
allCaipus=allCaipus.substring( allCaipus.indexOf(splitStr)+splitStr.length(),allCaipus.length());
// 删除占位符后的字符
allCaipus=allCaipus.substring(0, allCaipus.indexOf(splitStr));
this.setTitle( allCaipus); // 这个时候 才 在title 上显示正确: “随机中文字符串”。
这是 为什么啊? 有谁能说说?
我提交给 google 开发论坛,没人回答,估计没人看懂 我写的 英文。
http://code.google.com/p/android/issues/detail?id=3388
http://stackoverflow.com/questions/1187253/a-bug-read-data-from-res-raw-xxxx-txt-but-there-are-so-many-garbage-information2009年8月03日 18:58
8个答案 按时间排序 按投票排序
-
javaeyes 写道楼主的读文件方式实在雷人。文本文档的字符编码可能是单字节,双字节的,或者还有三个字节的。你任意读取一段字节,很可能导致在结尾处将一个字符的两个字节截断,再读取下一段字符时就是乱码了。三楼的办法还可以一用,但是遇到不同编码的文档可能会存在问题。
顺便说一句,论坛小测验也很雷人啊
呵呵,对, 不同编码的确会有问题. 我当时写的时候是因为目标文件全是ascii字符,所以因陋就简了.2009年8月03日 18:58
-
楼主的读文件方式实在雷人。文本文档的字符编码可能是单字节,双字节的,或者还有三个字节的。你任意读取一段字节,很可能导致在结尾处将一个字符的两个字节截断,再读取下一段字符时就是乱码了。三楼的办法还可以一用,但是遇到不同编码的文档可能会存在问题。
顺便说一句,论坛小测验也很雷人啊2009年8月03日 18:58
-
lordhong 写道bamboowind 写道
ps.哎,为了回答问题,被迫回答了论坛知识小测验..
唉... 我也是晚节不保啊...
是啊,换着别的论坛,早就走人了。感觉javaeye有点装清高,呵,不要封杀我啊。。。2009年8月03日 18:58
-
InputStream不应该直接用StringBuffer来读,需要通过BufferedReader转一下. 参考这个:
InputStream is = getResources().openRawResource(R.raw.good); BufferedReader br = new BufferedReader(new InputStreamReader(is)); int i = 0; String sc = null; do { sc = br.readLine(); if (sc == null) { throw new IOException("doesn't have enough lines!"); } i ++; }while (i < 12);
ps.哎,为了回答问题,被迫回答了论坛知识小测验..
buyajun 写道比如: 在/res/raw/xia.txt 文件内容为: ##随机中文字符串##
运行时 会发现在logcat里出来的文字不仅仅是乱码。。。 而且乱码前后会附加一些垃圾信息:
07-24 08:54:56.816: DEBUG/DataReadThread(3105): ï##è¿æ¯ä¸ æå 容##ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀè¿æ¯ä¸ æå 容##ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ
乱码问题还不是什么问题.
主要是 :读出来的东西 不正确啊!!!出现了一些垃圾信息
看到没? 两个##号 的前后 有些垃圾信息。而且##出现了4次。 按理说 只出现 2次啊。
不信你们 试试?
如果不 添加类似 ## 占位符,都读不出来 正确的信息。
下面是程序代码,不信你们试试? 我用的是1.5平台
InputStream inputStream = this.getResources().openRawResource(R.raw.xxxx);
StringBuffer tempStr = new StringBuffer();
byte[] buffer=new byte[1024];
int size=buffer.length;
while(size!=-1 || size>=buffer.length){
size=inputStream.read(buffer);
tempStr.append(new String(buffer, "UTF-8"));
}
String allCaipus = tempStr.toString();
String splitStr = "##"; // 占位符
// 删除占位符前的字符
allCaipus=allCaipus.substring( allCaipus.indexOf(splitStr)+splitStr.length(),allCaipus.length());
// 删除占位符后的字符
allCaipus=allCaipus.substring(0, allCaipus.indexOf(splitStr));
this.setTitle( allCaipus); // 这个时候 才 在title 上显示正确: “随机中文字符串”。
这是 为什么啊? 有谁能说说?
我提交给 google 开发论坛,没人回答,估计没人看懂 我写的 英文。
http://code.google.com/p/android/issues/detail?id=3388
http://stackoverflow.com/questions/1187253/a-bug-read-data-from-res-raw-xxxx-txt-but-there-are-so-many-garbage-information
2009年8月03日 18:58
相关推荐
### 使用RandomAccessFile流将一个文本文件读出并写入到另一个文件中的知识点解析 在Java编程语言中,`RandomAccessFile`类提供了一种非常灵活的方式来读取和写入文件。它支持随机访问,意味着我们可以直接跳转到...
"TXT文件信息的读入和读出.zip"是一个项目,它利用Microsoft的MFC(Microsoft Foundation Classes)库在Visual Studio 2015环境中实现TXT文件的读取和写入功能,并且扩展到对TXT文件内容的添加和删除操作。...
但请注意,`BinaryFormatter`并不适合跨平台或跨版本的序列化,因为它包含了类型信息和运行时环境的依赖。 总结一下,C#中的二进制文件读写涉及以下几个关键步骤: - 创建`FileStream`对象,指定文件路径和操作模式...
7. **未来发展趋势**:可能还会展望信息读出设备和方法的最新研究进展,如量子通信、光学信息读出等前沿技术。 总的来说,信息读出设备和信息读出方法是电信技术的基础,对于理解和优化通信系统的性能至关重要。...
在处理大量数据时,二分法通常比线性搜索更快,因为它将问题分解为更小的部分来解决。这里我们将探讨如何利用二分法进行文件的写入和读出,以及涉及到的排序和随机数生成。 首先,我们要理解如何在Java中使用二分法...
《着眼基本能力训练,读出语文能力培养》 在当今教育领域,语文能力的培养是不可或缺的重要环节。这个压缩包文件“着眼基本能力训练,读出语文能力培养.rar”聚焦于提升学生的基础语文素养,旨在帮助他们更好地理解...
当我们将BMP文件转换为TXT时,我们需要解析这些二进制数据并将其转化为人类可读的文本格式。这通常包括: 1. 文件头:BMP文件以一个固定长度的文件头开始,包括文件大小、创建时间等信息。例如,DOS头(2字节)和...
本项目中的"读写视频文件,将视频文件读出存为jpg文件,将jpg文件写为视频文件.zip"显然是一个关于视频与图像相互转换的实践。这个过程包括两个主要步骤:视频转图像(帧提取)和图像转视频。以下是对这两个过程的...
将按键次数写入AT24C02,再读出并用1602LCD显示.rar将按键次数写入AT24C02,再读出并用1602LCD显示.rar将按键次数写入AT24C02,再读出并用1602LCD显示.rar将按键次数写入AT24C02,再读出并用1602LCD显示.rar将按键...
当从视频中读取出每一帧后,可以使用`System.Drawing`库将这些帧保存为JPG或其他图像格式的文件。`Bitmap`类提供了`Save`方法,接受文件路径和图像格式作为参数,完成图片的保存。 4. **图片到视频的转换**: - `...
该课文在教材中起到了承上启下的作用,既总结了前一组的学习方法,也为下一组“多读多想,读通课文”的训练做了铺垫。 2. 教学目标: - 方法性目标:培养学生独立阅读的能力,通过“阅读提示”理解课文主要内容。 ...
1. 地址和数据的正确性:确保地址没有错误,并且在写入和读出过程中,数据的传输无误。 2. 内存管理:理解内存的分配和释放机制,防止内存泄漏或越界访问。 3. 并发访问:在多线程环境中,要处理好并发访问存储器的...
字符串间隔读出_3).C 可直接运行的C语言程序 逻辑清晰
该文档总结arm芯片,内部flash写保护的解决的一般通用方法,适用于stm32,gd32系列芯片,具体请查看文档内容
本实验的完成环境为 Visual Studio 2013,实验内容为建立一个函数,读出数据文件的内容,然后写入目标文件中,本次实验介绍第一种文件读的方式:建立一个函数,读出数据文件 source.txt 中的内容,然后写入目标文件 ...
- 当你使用 `fopen` 函数打开文件时,使用的模式可能只允许写入而没有读取权限。例如,使用 "w" 模式会清空已有文件并创建一个新文件供写入,但不会自动添加读取权限。在这种情况下,即使文件中有数据,尝试用 "r" ...
Javabean写入文件,文件读出为Javabean
从数据库中读取文件时,我们通常会获取`FileData`字段的二进制数据,然后写入到一个文件中。以下是如何实现这个过程: ```csharp // 查询文件数据 SqlCommand getCommand = new SqlCommand("SELECT FileData FROM ...
当RGB图像数据保存为TXT文件时,每个像素的三个通道值会按行按列排列。例如,对于一个宽度为M,高度为N的图像,会有M*N行,每行包含3个数值,分别代表红、绿、蓝的强度。 3. **MATLAB读取TXT文件**: 在MATLAB中...
宏观利率周报:金融稳定报告可以读出哪些关注点.pdf