一起来测试JDK/JRE中FileWriter的bug!!
来源:互联网 发布:一楼适合做榻榻米 知乎 编辑:程序博客网 时间:2024/05/16 02:03
本文首发于CSDN,niko7的个人空间。http://blog.csdn.net/niko7
转载和引用必须注明出处!
这个bug是我在调试程序时发现的,还没有查过是否有类似报道,也不确定是否已经修正。
现把测试代码放上来,有兴趣的朋友可以一起来验证,顺便测试一下别的平台,别的版本中是否也存在这个问题?
像这样的问题,一般只存在于特定的平台,特定的版本。
如果恰好你正在用这个平台(或者你的产品将被部署到这个环境),那么注意避开这个bug!
代码:
以下是我测试的环境:
转载和引用必须注明出处!
这个bug是我在调试程序时发现的,还没有查过是否有类似报道,也不确定是否已经修正。
现把测试代码放上来,有兴趣的朋友可以一起来验证,顺便测试一下别的平台,别的版本中是否也存在这个问题?
像这样的问题,一般只存在于特定的平台,特定的版本。
如果恰好你正在用这个平台(或者你的产品将被部署到这个环境),那么注意避开这个bug!
代码:
package niko7.test.csdn;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
/**
* 测试JDK/JRE中FileWriter的bug。
*
* 详细情况看代码中的注释。
* 这种问题应该是在特定的 jdk/jre 版本中才存在的,望大家协助测试,并将结果反馈到我的blog中: http://blog.csdn.net/niko7
*
* 转载、引用必须保留此段信息。
* @author niko7,(顾法华,杭州)
* @email niko7@163.com
*/
public class TestJDK
{
public static void main(String[] args)
{
Properties p = System.getProperties();
System.out.println("jre信息:");
p.list(System.out);
System.out.println();
String s = "0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_= ";
FileWriter fw = null;
try
{
File f = new File("output.txt");
System.out.println("文件位置:"+f.getAbsoluteFile());
fw = new FileWriter(f);
for (int i = 0; i < 300; i++)
{
fw.write(s);
//如果没有下面一行,那么文件的内容不是你想的那样的!!!!
//第81行,第3个“_”神秘失踪!!
//0123456789_0123456789_01234567890123456789_0123456789_0123456789_0123456789_0123456789_0123456789_=
//比上面的一行和下面的一行短一点!
//第161行,第241行,都有字符丢失!
//fw.flush();//这一行不注释掉就能正常
}
fw.flush();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if(null!=fw)
{
try
{
fw.close();
}
catch (IOException e)
{
e.printStackTrace();
}
fw = null;
}
}
System.out.println("完成!");
}
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
/**
* 测试JDK/JRE中FileWriter的bug。
*
* 详细情况看代码中的注释。
* 这种问题应该是在特定的 jdk/jre 版本中才存在的,望大家协助测试,并将结果反馈到我的blog中: http://blog.csdn.net/niko7
*
* 转载、引用必须保留此段信息。
* @author niko7,(顾法华,杭州)
* @email niko7@163.com
*/
public class TestJDK
{
public static void main(String[] args)
{
Properties p = System.getProperties();
System.out.println("jre信息:");
p.list(System.out);
System.out.println();
String s = "0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_0123456789_= ";
FileWriter fw = null;
try
{
File f = new File("output.txt");
System.out.println("文件位置:"+f.getAbsoluteFile());
fw = new FileWriter(f);
for (int i = 0; i < 300; i++)
{
fw.write(s);
//如果没有下面一行,那么文件的内容不是你想的那样的!!!!
//第81行,第3个“_”神秘失踪!!
//0123456789_0123456789_01234567890123456789_0123456789_0123456789_0123456789_0123456789_0123456789_=
//比上面的一行和下面的一行短一点!
//第161行,第241行,都有字符丢失!
//fw.flush();//这一行不注释掉就能正常
}
fw.flush();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if(null!=fw)
{
try
{
fw.close();
}
catch (IOException e)
{
e.printStackTrace();
}
fw = null;
}
}
System.out.println("完成!");
}
}
以下是我测试的环境:
jre信息:
-- listing properties --
java.runtime.name=Java(TM) 2 Runtime Environment, Stand...
sun.boot.library.path=C:javaj2sdk1.4.2_03jrein
java.vm.version=1.4.2_03-b02
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=CN
sun.os.patch.level=Service Pack 2
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:est
java.runtime.version=1.4.2_03-b02
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:javaj2sdk1.4.2_03jrelibendorsed
os.arch=x86
java.io.tmpdir=C:DOCUME~1gfhLOCALS~1Temp
line.separator=
java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows XP
sun.java2d.fontpath=
java.library.path=C:javaj2sdk1.4.2_03in;.;C:WINDOW...
java.specification.name=Java Platform API Specification
java.class.version=48.0
java.util.prefs.PreferencesFactory=java.util.prefs.WindowsPreferencesFac...
os.version=5.1
user.home=C:Documents and Settingsgfh
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=GB18030
java.specification.version=1.4
user.name=gfh
java.class.path=C:estest_output...
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:javaj2sdk1.4.2_03jre
java.specification.vendor=Sun Microsystems Inc.
user.language=zh
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.4.2_03
java.ext.dirs=C:javaj2sdk1.4.2_03jrelibext
sun.boot.class.path=C:javaj2sdk1.4.2_03jrelib t.jar;...
java.vendor=Sun Microsystems Inc.
file.separator=
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.isalist=pentium i486 i386
-- listing properties --
java.runtime.name=Java(TM) 2 Runtime Environment, Stand...
sun.boot.library.path=C:javaj2sdk1.4.2_03jrein
java.vm.version=1.4.2_03-b02
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=CN
sun.os.patch.level=Service Pack 2
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:est
java.runtime.version=1.4.2_03-b02
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:javaj2sdk1.4.2_03jrelibendorsed
os.arch=x86
java.io.tmpdir=C:DOCUME~1gfhLOCALS~1Temp
line.separator=
java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows XP
sun.java2d.fontpath=
java.library.path=C:javaj2sdk1.4.2_03in;.;C:WINDOW...
java.specification.name=Java Platform API Specification
java.class.version=48.0
java.util.prefs.PreferencesFactory=java.util.prefs.WindowsPreferencesFac...
os.version=5.1
user.home=C:Documents and Settingsgfh
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=GB18030
java.specification.version=1.4
user.name=gfh
java.class.path=C:estest_output...
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:javaj2sdk1.4.2_03jre
java.specification.vendor=Sun Microsystems Inc.
user.language=zh
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.4.2_03
java.ext.dirs=C:javaj2sdk1.4.2_03jrelibext
sun.boot.class.path=C:javaj2sdk1.4.2_03jrelib t.jar;...
java.vendor=Sun Microsystems Inc.
file.separator=
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.isalist=pentium i486 i386
- 一起来测试JDK/JRE中FileWriter的bug!!
- JDK中JRE与Program Files中的JRE的区别
- 一起来看看protobuf中容易引起bug的一个细节
- 一起来看看protobuf中容易引起bug的一个细节
- Java中JDK,JRE,JVM的区别
- Java中jre和jdk的区别
- JAVA中JDK与JRE的区别
- Java中jre 和 jdk 的区别
- java中jdk与jre的区别
- Java中JDK,JRE,JVM的区别
- Java中JDK,JRE,JVM的区别
- JAVA中JDK和JRE的区别
- JDK中Stack的bug
- JDK JRE的区别
- jdk,jre的关系
- JRE,JDK的异同
- JDK,JRE的区别
- JDK&JRE的区别
- Spring Modules - Modules, add-ons and integration tools for Spring
- 关于.net 中调用script的alert后 css失效的办法
- java中1.4和1.5版本不同造成的问题
- Learning python 系列5
- asp.net2.0密码强度验证
- 一起来测试JDK/JRE中FileWriter的bug!!
- vim 使用经验
- Visual C++ 常用插件
- 群发送邮件类
- CDMA和WCDMA
- Login控件也可添加图文验证码
- 关联删除
- 如何手工制作CPU?
- Windows 2003 msvbvm50.dll 缺失