0 0

读文件时读出一些垃圾信息.解决办法,还也没有其他的办法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-information
2009年8月03日 18:58

8个答案 按时间排序 按投票排序

0 0

qqqqqq

2009年8月10日 14:46
0 0

引用

顺便说一句,论坛小测验也很雷人啊

原来在座各位都做个小测试啊...

2009年8月03日 21:18
0 0

javaeyes 写道
楼主的读文件方式实在雷人。文本文档的字符编码可能是单字节,双字节的,或者还有三个字节的。你任意读取一段字节,很可能导致在结尾处将一个字符的两个字节截断,再读取下一段字符时就是乱码了。三楼的办法还可以一用,但是遇到不同编码的文档可能会存在问题。
顺便说一句,论坛小测验也很雷人啊

呵呵,对, 不同编码的确会有问题. 我当时写的时候是因为目标文件全是ascii字符,所以因陋就简了.

2009年8月03日 18:58
0 0

楼主的读文件方式实在雷人。文本文档的字符编码可能是单字节,双字节的,或者还有三个字节的。你任意读取一段字节,很可能导致在结尾处将一个字符的两个字节截断,再读取下一段字符时就是乱码了。三楼的办法还可以一用,但是遇到不同编码的文档可能会存在问题。
顺便说一句,论坛小测验也很雷人啊

2009年8月03日 18:58
0 0

lordhong 写道
bamboowind 写道

ps.哎,为了回答问题,被迫回答了论坛知识小测验..



唉... 我也是晚节不保啊... 


是啊,换着别的论坛,早就走人了。感觉javaeye有点装清高,呵,不要封杀我啊。。。

2009年8月03日 18:58
0 0

bamboowind 写道

ps.哎,为了回答问题,被迫回答了论坛知识小测验..



唉... 我也是晚节不保啊... 

2009年8月03日 18:58
0 0

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
0 0

好像是编码问题吧, eclipse用UTF-8试试?

2009年8月03日 18:58

相关推荐

    《你必须知道的495个C语言问题》

    2.12 怎样从/向数据文件读/写结构? 27 结构填充 27 2.13 为什么我的编译器在结构中留下了空洞?这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 27  ...

    你必须知道的495个C语言问题

    2.12 怎样从/向数据文件读/写结构? 结构填充 2.13 为什么我的编译器在结构中留下了空洞?这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 2.14 为什么...

    巴彦淖尔市-杭锦后旗-街道行政区划_150826_Shp数据-wgs84坐标系.rar

    巴彦淖尔市-杭锦后旗-街道行政区划_150826_Shp数据-wgs84坐标系.rar

    巴彦淖尔市-乌拉特后旗-街道行政区划_150825_Shp数据-wgs84坐标系.rar

    巴彦淖尔市-乌拉特后旗-街道行政区划_150825_Shp数据-wgs84坐标系.rar

    北京市-东城区-街道行政区_110101_shp-wgs84坐标系.rar

    街道级行政区划shp数据,wgs84坐标系,直接使用。

    石家庄市-石家庄市-石家庄市-深泽县-街道行政区划_130128_Shp数据wgs84坐标系.rar

    街道级行政区划shp数据,wgs84坐标系,直接下载使用。

    手写和个性特征数据集-Handwriting & Personality Traits Dataset

    手写和个性特征数据集 笔迹风格与人格特质的关系分析 手写和个性特征数据集 代码 下载 关于数据集 概述 笔迹和人格特征数据集基于大五人格模型探索了笔迹特征和人格特征之间的关系。它包含2000行和24列,包括手写样本参考、书写速度、人格特质得分、人口统计信息和其他手写相关特征。 该数据集可用于笔迹学研究、机器学习应用、个性预测和行为分析。 数据集结构 手写样本参考:每一行对应一个人的手写样本,由图像文件名表示。 写作速度:人写作的速度,以每分钟字数(wpm)为单位。 人格特质:五大人格特质的得分,在0到1之间标准化。 人口统计:性别和年龄信息。 手写特征:15个随机生成的手写相关特征,可能对应于倾斜、压力、间距或字母一致性等方面。 列详细信息 手写_示例 数据类型:字符串 描述:指扫描的手写样本的文件名(例如sample_1.jpg)。 书写_速度_wpm 数据类型:整数 描述:测量个人的书写速度,单位为每分钟单词数(wpm),范围为10到60 wpm。 开放性 数据类型:浮点(0-1) 描述:衡量个人的创造力、好奇心和开放性水平。更高的值表示对新体验的开放程度更高。 尽责性 数据类型:浮点(0-1) 描述:代表纪律、组织和责任。更高的值表示更高的可靠性和自律性。 外向性 数据类型:浮点(0-1) 描述:衡量社交能力、精力和热情。更高的值表示更外向的性格。 合意性 数据类型:浮点(0-1) 描述:反映善良、合作和同理心。更高的价值观意味着更大的同情心和社会和谐。 神经质 数据类型:浮点(0-1) 描述:表示情绪稳定和压力水平。较高的值表示焦虑和情绪波动增加,而较低的值表示情绪弹性。 性别 数据类型:字符串(男、女、其他) 描述:个人的性别认同。 年龄 数据类型:整数(18-60) 描述:个人的年龄,从18岁到60岁不等。 其他手写功能(功能_1至功能_15) 数据类型:浮点(

    多语言笔记系列:添加Jupyter内核,支持Python语言

    多语言笔记系列:添加Jupyter内核,支持Python语言

    临汾市-吉县-街道行政区划_141028_Shp数据-wgs84坐标系.rar

    街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用

    MATLAB Simulink MIL/SIL测试:模型与软件在环测试的自动化实现及最佳实践

    内容概要:本文详细介绍了MATLAB Simulink中MIL(模型在环)和SIL(软件在环)测试的具体实施步骤和技术细节。首先,通过具体的测试脚本展示了如何配置输入信号、运行仿真并验证输出结果,确保模型逻辑的正确性。接着,讨论了从MIL过渡到SIL过程中需要注意的问题,如代码生成、求解器选择、数据类型转换等。此外,还提供了生成测试报告的方法,强调了测试用例的设计和管理,以及如何处理常见的测试失败情况。最后,分享了一些实用的测试技巧和经验教训,帮助开发者提高测试效率和准确性。 适合人群:从事嵌入式系统开发和测试的工程师,尤其是熟悉MATLAB Simulink的用户。 使用场景及目标:适用于需要验证Simulink模型及其生成代码的行为一致性,确保嵌入式系统的可靠性和稳定性。主要目标是掌握MIL和SIL测试的基本概念、具体实现方法和常见问题的解决方案。 其他说明:文中提供的代码示例和实践经验有助于读者更好地理解和应用MIL/SIL测试,避免常见的陷阱和错误。同时,强调了测试文档管理和版本控制的重要性,以确保测试过程的可追溯性和可靠性。

    承德市-鹰手营子矿区--街道行政区划_130804_Shp-wgs84坐标系.rar

    街道级行政区划shp数据,wgs84坐标系,直接使用。

    Java编程Java基础面试题汇总:核心概念、JVM、JDK、JRE详解及常见问题解答

    内容概要:本文档《Java基础面试题.pdf》涵盖了Java编程的核心概念和技术要点,包括面向对象和面向过程的区别、Java语言的特点、JVM、JDK和JRE的详细解释、Oracle JDK与OpenJDK的对比、Java与C++的区别、Java程序主类的应用、Java应用程序与小程序的差异、字符型常量和字符串常量的区别、构造器的特性、重载和重写的区别、面向对象编程的三大特性(封装、继承、多态)、String、StringBuffer和StringBuilder的区别、自动装箱与拆箱的概念、静态方法与实例方法的区别、对象相等与引用相等的区别、==与equals的区别、hashCode与equals的关系、Java中只有值传递的原因、线程、程序、进程的基本概念及其关系、线程的基本状态、final关键字的用法、Java中的异常处理机制、如何防止字段序列化、以及获取键盘输入的两种常用方法。; 适合人群:具备一定编程基础,尤其是Java开发经验的程序员,无论是初学者还是有一定工作经验的开发者都可以从中受益。; 使用场景及目标:①帮助Java开发者准备面试,掌握Java基础知识和技术细节;②加深对Java核心技术的理解,如JVM的工作原理、面向对象编程的特性、异常处理机制等;③提高实际开发中的编码技巧,如选择合适的字符串处理类、理解线程与进程的区别、掌握异常处理的最佳实践等。; 阅读建议:此文档内容详实,涵盖面广,建议读者根据自身需求有针对性地阅读。对于面试准备阶段的开发者,重点复习常见面试题及其答案;对于日常开发的开发者,关注技术细节和最佳实践,结合实际项目进行理解和应用。

    基于Java,SpringBoot,Vue,Python爬虫,Hadoop大数据旅游推荐管理系统设计.zip

    基于hadoop的系统

    乌兰察布市-集宁区-街道行政区划_150902_Shp数据-wgs84坐标系.rar

    街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用

    朔州市-右玉县-街道行政区划_140623_Shp数据-wgs84坐标系.rar

    街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用

    西门子S7-200 Smart模拟量滤波程序:高效处理电流电压及热电阻信号

    内容概要:本文详细介绍了一种基于西门子S7-200 Smart PLC的模拟量滤波程序,用于处理电流、电压及热电阻信号。该程序采用了间接寻址和FOR循环结构,实现了高效的多通道信号采集和滤波。核心算法为移动加权平均,能够有效减少信号噪声和抖动,提高测量精度。此外,程序还包括智能报警机制,防止因信号突变引发误报警。文中提供了详细的代码片段和实测数据,展示了该程序在现场应用中的优越性能。 适合人群:从事工业自动化控制系统的工程师和技术人员,尤其是那些需要处理模拟量信号的从业者。 使用场景及目标:适用于各类工业环境中,如水泥厂、污水处理厂等,旨在解决模拟量信号不稳定的问题,确保数据采集的准确性。主要目标是通过优化PLC程序,提升系统的可靠性和稳定性。 其他说明:该程序不仅减少了代码量,提高了开发效率,还增强了系统的可维护性和扩展性。视频教程进一步解释了如何调整滤波系数和报警阈值,使用户可以根据具体应用场景进行灵活配置。

    WPF智慧工厂数据平台的设计与实现:基于MVVM模式的高效数据可视化解决方案

    内容概要:本文详细介绍了如何使用WPF(Windows Presentation Foundation)构建高效的工厂数据平台。作者通过实际案例展示了如何解决传统Web方案在高并发实时数据处理中的不足,采用MVVM模式进行架构设计,确保数据更新时界面能够自动刷新。文中具体讲解了使用ObservableCollection管理设备状态数据、OxyPlot绘制实时曲线图、LiveCharts库创建动态图表以及通过DockPanel和Grid进行灵活布局的方法。此外,还讨论了如何为数据刷新和异常报警添加适当的动画效果,使界面既美观又实用。 适合人群:具备一定WPF开发经验的程序员、工业自动化领域的工程师和技术爱好者。 使用场景及目标:适用于需要构建高性能、高可靠性的工厂数据监控系统的场景。主要目标是提高数据处理效率,增强用户体验,确保系统稳定运行。 其他说明:文章强调了工业数据平台不仅要追求界面的美观,更重要的是将复杂信息以直观易懂的方式呈现给用户。同时提醒开发者注意数据库连接的安全性和灵活性,确保系统的可维护性和扩展性。

    唐山市-唐山市--街道行政区划_130200_Shp-wgs84坐标系.rar

    街道级行政区划shp数据,wgs84坐标系,直接下载使用。

    【LEACH协议】基于matlab LEACH与Z-SEP比较【含Matlab源码 13205期】.zip

    Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【大数据与分布式系统】Kafka架构解析与核心功能详解:涵盖设计原理、消息传输机制及应用要点

    内容概要:本文档详细介绍了Kafka的核心概念、架构设计及其工作机制。Kafka以topic为单位归纳消息,通过producers发布消息到集群,consumers订阅topics并消费消息,集群由多个broker组成。文档解释了Kafka的数据传输事务定义、节点存活判断、消息发送机制、消费模式(Pull模式)、消息存储格式与高效文件存储设计特点。此外,还讨论了Kafka与传统消息系统的区别、topic创建时分区放置规则、partition数据保存方式、ack机制、消费者数据消费方式、负载均衡策略以及数据有序性和生产数据时的数据分组策略等内容。; 适合人群:对Kafka有一定了解,希望深入理解Kafka架构设计和工作原理的技术人员,包括但不限于软件工程师、架构师和运维人员。; 使用场景及目标:①帮助技术人员掌握Kafka的核心组件和工作流程,理解其分布式特性;②为解决实际问题提供理论依据,如优化数据传输、提升系统性能;③指导开发者正确配置和使用Kafka,确保消息可靠传递和高效处理。; 阅读建议:由于文档内容较为专业和技术性较强,建议读者在阅读前先熟悉基本的消息队列概念。阅读过程中应重点关注Kafka的独特设计和实现细节,如Pull模式的优势、高效的文件存储设计等,并结合实际应用场景思考其应用价值。同时,对于配置项和参数的理解有助于更好地管理和优化Kafka集群。

Global site tag (gtag.js) - Google Analytics