今天遇到一个很诡异的问题,同一样的代码和同一个数据文件,在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(Automated Teller Machine)代码在Eclipse中运行涉及了多个计算机科学和技术领域的知识点。首先,ATM代码通常是指模拟自动取款机功能的软件程序,它可能包括用户界面、数据库交互、安全认证等多个模块。在...
在Java工程中脱离Eclipse运行的主要优点是可以在不安装Eclipse的情况下运行Java程序,提高了程序的可移植性和灵活性。 在实现Java工程脱离Eclipse运行的过程中,需要注意以下几点: 1. 选择正确的JAR文件类型,...
"eclipse插件-控制台彩色"这个主题,主要涉及到如何为Eclipse的控制台增加颜色高亮显示,以提高代码调试和日志查看的可读性。 在Eclipse中,控制台是程序员日常工作中不可或缺的一部分,它用于显示程序运行时的输出...
例如,在控制台中使用 println() 或 print() 输出大量数据时,可能会出现问题。这是因为 Eclipse 控制台默认情况下最多显示 80000 字符,如果超出这个限制,控制台将无法显示全部信息。 解决这个问题的方法是取消 ...
5. **在控制台输入数据**:在底部的"Eclipse Console"窗口中,你会看到程序的输出,如"请输入一个数字:"。此时,直接在控制台窗口中键入你的输入(比如一个数字),然后按回车。程序会接收到输入并处理。 6. **...
在Eclipse中运行Tomcat源代码,需要一系列的依赖库,包括JAR包,以便能够正确编译、理解和执行Tomcat服务器的相关组件。以下是对给定的文件信息中提到的几个关键JAR包的详细解释: 1. **org.eclipse.jdt.core_3.4.0...
### 在Eclipse中运行带有HTML参数传递的Applet文件 #### 概述 本文主要介绍如何在Eclipse IDE中调试并运行JDK自带的Applets示例程序——Animator,并实现HTML页面向Applet传递参数的功能。通常情况下,为了实现...
【在Eclipse中运行Weka】是一个针对数据挖掘和机器学习初学者的重要步骤,Weka是一个流行的开源工具,集成了大量的机器学习算法和数据预处理功能。本文将深入讲解如何在强大的Java集成开发环境Eclipse中配置并运行...
通过导入这个配置文件到Eclipse,所有项目中的代码在保存时都会按照这些规则进行格式化,确保团队代码风格的一致性。 `cleanup-profile.xml`是Eclipse代码清理配置文件,它包含了对代码进行规范化的规则集合。这个...
### 在JDK和Eclipse下Java Applet的编写与运行详解 #### 一、Java Applet简介 Java Applet是一种可以嵌入到网页中的小型Java应用程序。它可以在支持Java的Web浏览器上运行,使得开发者能够利用Java的强大功能来...
### Openfire 源代码在 Eclipse 3.5.2 中的部署、编译、运行与安装 #### 一、准备工作 在开始之前,需要确保已经下载了 Openfire(版本 3.6.4)、Spark(版本 2.5.8)以及 Smack(版本 3.1.0)。由于 Spark 的源码...
在控制台中,用户可以通过输入特定命令来触发这些操作。这需要设计一个简单的命令解析器,它可以识别用户的输入并调用相应的业务方法。例如,用户输入"deposit 12345 500"表示为账号12345存入500元,解析器将解析出...
`TextViewer`类提供了在控制台中显示文本的基础功能。`ConsoleViewer`类可能还需要实现自定义的功能,例如文本高亮显示、搜索功能等。 #### 实现细节 1. **控制台的构建**:在构建控制台时,首先需要创建一个`...
这个压缩包包含的“eclipse RCP学习项目源码&扩展控制台插件for eclipse3.5”是针对Eclipse 3.5版本的一个学习资源,它涵盖了RCP应用开发的基础和如何创建自定义控制台插件。 首先,RCP项目源码是理解Eclipse RCP...
在Eclipse中,用户界面的高效布局和调整是提升开发效率的关键。标题" Eclipse窗口调整"涉及到的主要知识点包括如何定制和优化Eclipse的工作空间,以便更好地查看和管理各种窗口,如Logcat、Console以及搜索等。 1. ...
在本文中,我们将详细探讨如何在Eclipse环境中部署、编译和运行Apache Spark的源代码。Apache Spark是一个流行的开源大数据处理框架,它提供了快速、通用和可扩展的数据处理能力。而Eclipse是一款广泛使用的Java集成...
4. 查看结果:统计结果通常会在一个弹出窗口或者Eclipse的输出视图中显示,列出了不同类型的代码行数,比如总行数、注释行数、空行数以及实际代码行数。 5. 分析与优化:根据统计结果,开发者可以判断代码是否有...
0.20.1版本是Hadoop的一个较早版本,尽管现在有更新的版本,但了解如何在Eclipse环境中构建和运行旧版本的源代码仍然有价值,特别是对于学习Hadoop历史和演进的开发者。 首先,你需要确保你的开发环境满足必要的...
2. 编写Bundle:在新创建的OSGi Bundle项目中,你可以编写自己的Java类,并在MANIFEST.MF文件中定义导出和导入的包。MANIFEST.MF是每个OSGi Bundle的核心,它包含了关于组件的信息,如版本、依赖关系等。 3. 配置...