`
kingj
  • 浏览: 426294 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

同样的代码和数据文件,为什么在eclipse中运行和在控制台运行的结果不一样?

 
阅读更多

今天遇到一个很诡异的问题,同一样的代码和同一个数据文件,在eclipse或者其它ide中能正常运行,为什么在控制台确不能正确的运行?

 

代码很简单,就是从一个数据文件中读取一定的行数,然后处理这些行

代码如下

 

 

public static void main(String[] args) throws Exception {
		final String SEPERATOR = "\" \"";
		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("d:/test11.log")));
		String line = null;
		int c = 0;
		while ((line = reader.readLine()) != null && c < 5000) {
			String[] infos = line.split(SEPERATOR);
			if (infos.length != 13) {
				System.out.println("infos.length size = " + infos.length);
				throw new Exception(String.format("报错行数(%d,%s)\n", c, line));
			}
			c++;
		}
	}
 

这个数据文件是UTF-8的编码格式,其中有一些数据中存在诸如"?"之类的乱码。此时eclipse中工程的编码设置为UTF-8,程序能够正常的运行,

但是诡异的事情在我将工程的编码设置为gbk后就发生了,代码不能正常运行了。难道代码在eclipse中运行时,eclipse会自动拦截并用当前工程的编码

过滤文件的IO读写吗?

 

后来将代码改成如下:

 

 

public static void main(String[] args) throws Exception {
		final String SEPERATOR = "\" \"";
		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("d:/test11.log"),"UTF-8"));
		String line = null;
		String other=null;
		int c = 0;
		while ((line = reader.readLine()) != null && c < 5000) {
			other=new String(line.getBytes(),"UTF-8");
			String[] infos = other.split(SEPERATOR);
			if (infos.length != 13) {
				System.out.println("infos.length size = " + infos.length);
				throw new Exception(String.format("报错行数(%d,%s)\n", c, line));
			}
			c++;
		}
	}

 

 给输入流加上UTF-8编码后,程序在ide中和控制台都能正常运行了

 

此时,无论给工程的编码属性配置成utf-8或者gbk都没有问题了,最让人费解的是elipse真的对IO流过滤了吗?

有谁知道这个问题请不吝赐教

分享到:
评论

相关推荐

    ATM代码在eclipse中运行

    ATM(Automated Teller Machine)代码在Eclipse中运行涉及了多个计算机科学和技术领域的知识点。首先,ATM代码通常是指模拟自动取款机功能的软件程序,它可能包括用户界面、数据库交互、安全认证等多个模块。在...

    java工程脱离eclipse运行

    在Java工程中脱离Eclipse运行的主要优点是可以在不安装Eclipse的情况下运行Java程序,提高了程序的可移植性和灵活性。 在实现Java工程脱离Eclipse运行的过程中,需要注意以下几点: 1. 选择正确的JAR文件类型,...

    eclipse插件-控制台彩色

    "eclipse插件-控制台彩色"这个主题,主要涉及到如何为Eclipse的控制台增加颜色高亮显示,以提高代码调试和日志查看的可读性。 在Eclipse中,控制台是程序员日常工作中不可或缺的一部分,它用于显示程序运行时的输出...

    Eclipse控制台展示字符的问题

    例如,在控制台中使用 println() 或 print() 输出大量数据时,可能会出现问题。这是因为 Eclipse 控制台默认情况下最多显示 80000 字符,如果超出这个限制,控制台将无法显示全部信息。 解决这个问题的方法是取消 ...

    eclipse怎么运行需要从键盘输入数据的Java程序啊?

    5. **在控制台输入数据**:在底部的"Eclipse Console"窗口中,你会看到程序的输出,如"请输入一个数字:"。此时,直接在控制台窗口中键入你的输入(比如一个数字),然后按回车。程序会接收到输入并处理。 6. **...

    在eclipse当中运行tomcat源代码需要的jar包

    在Eclipse中运行Tomcat源代码,需要一系列的依赖库,包括JAR包,以便能够正确编译、理解和执行Tomcat服务器的相关组件。以下是对给定的文件信息中提到的几个关键JAR包的详细解释: 1. **org.eclipse.jdt.core_3.4.0...

    在eclipse中运行带html参数传递的applet文件

    ### 在Eclipse中运行带有HTML参数传递的Applet文件 #### 概述 本文主要介绍如何在Eclipse IDE中调试并运行JDK自带的Applets示例程序——Animator,并实现HTML页面向Applet传递参数的功能。通常情况下,为了实现...

    在eclipse下运行weka

    【在Eclipse中运行Weka】是一个针对数据挖掘和机器学习初学者的重要步骤,Weka是一个流行的开源工具,集成了大量的机器学习算法和数据预处理功能。本文将深入讲解如何在强大的Java集成开发环境Eclipse中配置并运行...

    eclipse格式化代码配置文件.zip

    通过导入这个配置文件到Eclipse,所有项目中的代码在保存时都会按照这些规则进行格式化,确保团队代码风格的一致性。 `cleanup-profile.xml`是Eclipse代码清理配置文件,它包含了对代码进行规范化的规则集合。这个...

    在JDK和Eclipse下Java_Applet的编写和运行方式

    ### 在JDK和Eclipse下Java Applet的编写与运行详解 #### 一、Java Applet简介 Java Applet是一种可以嵌入到网页中的小型Java应用程序。它可以在支持Java的Web浏览器上运行,使得开发者能够利用Java的强大功能来...

    Openfire源代码在Eclipse3.5.2中的部署、编译、运行、部署安装

    ### Openfire 源代码在 Eclipse 3.5.2 中的部署、编译、运行与安装 #### 一、准备工作 在开始之前,需要确保已经下载了 Openfire(版本 3.6.4)、Spark(版本 2.5.8)以及 Smack(版本 3.1.0)。由于 Spark 的源码...

    eclipse控制台操作模拟银行系统.zip

    在控制台中,用户可以通过输入特定命令来触发这些操作。这需要设计一个简单的命令解析器,它可以识别用户的输入并调用相应的业务方法。例如,用户输入"deposit 12345 500"表示为账号12345存入500元,解析器将解析出...

    Eclipse插件中控制台的实现·

    `TextViewer`类提供了在控制台中显示文本的基础功能。`ConsoleViewer`类可能还需要实现自定义的功能,例如文本高亮显示、搜索功能等。 #### 实现细节 1. **控制台的构建**:在构建控制台时,首先需要创建一个`...

    eclipse RCP学习项目源码&amp;扩展控制台插件for eclipse3.5

    这个压缩包包含的“eclipse RCP学习项目源码&扩展控制台插件for eclipse3.5”是针对Eclipse 3.5版本的一个学习资源,它涵盖了RCP应用开发的基础和如何创建自定义控制台插件。 首先,RCP项目源码是理解Eclipse RCP...

    Eclipse窗口调整

    在Eclipse中,用户界面的高效布局和调整是提升开发效率的关键。标题" Eclipse窗口调整"涉及到的主要知识点包括如何定制和优化Eclipse的工作空间,以便更好地查看和管理各种窗口,如Logcat、Console以及搜索等。 1. ...

    Spark源代码在Eclipse中的部署、编译、运行.doc

    在本文中,我们将详细探讨如何在Eclipse环境中部署、编译和运行Apache Spark的源代码。Apache Spark是一个流行的开源大数据处理框架,它提供了快速、通用和可扩展的数据处理能力。而Eclipse是一款广泛使用的Java集成...

    统计代码行数的Eclipse插件

    4. 查看结果:统计结果通常会在一个弹出窗口或者Eclipse的输出视图中显示,列出了不同类型的代码行数,比如总行数、注释行数、空行数以及实际代码行数。 5. 分析与优化:根据统计结果,开发者可以判断代码是否有...

    Eclipse中编译运行Hadoop-0.20.1源码

    0.20.1版本是Hadoop的一个较早版本,尽管现在有更新的版本,但了解如何在Eclipse环境中构建和运行旧版本的源代码仍然有价值,特别是对于学习Hadoop历史和演进的开发者。 首先,你需要确保你的开发环境满足必要的...

    Eclipse中搭建Felix运行环境

    2. 编写Bundle:在新创建的OSGi Bundle项目中,你可以编写自己的Java类,并在MANIFEST.MF文件中定义导出和导入的包。MANIFEST.MF是每个OSGi Bundle的核心,它包含了关于组件的信息,如版本、依赖关系等。 3. 配置...

Global site tag (gtag.js) - Google Analytics