Java Windows上非常奇怪的FileOutputStream行为
我已经检查了本机Windows中所有可用的源代码Java Windows上非常奇怪的FileOutputStream行为,java,windows,io,Java,Windows,Io,我已经检查了本机Windows中所有可用的源代码CreateFileW和WriteFile调用jdk8u/jdk/src/Windows/native/sun/nio/ch/FileDispatcherImpl.c,但我不知道为什么这两个调用会创建不同长度的文件: FileOutputStream f = new FileOutputStream(new File("x.cfg")); f.write("hello\n".getBytes()); f.close(); 及 我尝试了不同的扩展,
CreateFileW
和WriteFile
调用jdk8u/jdk/src/Windows/native/sun/nio/ch/FileDispatcherImpl.c
,但我不知道为什么这两个调用会创建不同长度的文件:
FileOutputStream f = new FileOutputStream(new File("x.cfg"));
f.write("hello\n".getBytes());
f.close();
及
我尝试了不同的扩展,但似乎只有.cfg
会导致LF→CRLF转换
看起来这不是Java的错误,只是Windows的问题。好的,问题是OSGi fileinstall服务在写入文件后进行了转换…好的,问题是OSGi fileinstall服务在写入文件后进行了转换…使用JDK1.8.0\u 65这两个文件在我的系统上都有6个字节(Windows 7 64位)。可能是病毒扫描程序更改了内容吗?我尝试了JDK1.8.0_66,Windows 2012R2。您应该检查是否分配了config.properties文件。我不确定具体细节,但这里有一个指向用法的链接。这是Java问题,不是Windows问题。不转换任何内容,也不提供指定文本输出的方法。所有必须在Windows API(即CRT或JVM)上实现所需的转换。使用JDK1.8.065,两个文件在我的系统上都有6个字节(Windows 7 64位)。可能是病毒扫描程序更改了内容吗?我尝试了JDK1.8.0_66,Windows 2012R2。您应该检查是否分配了config.properties文件。我不确定具体细节,但这里有一个指向用法的链接。这是Java问题,不是Windows问题。不转换任何内容,也不提供指定文本输出的方法。所有所需的转换必须在Windows API(即CRT或JVM)之上实现。
FileOutputStream f = new FileOutputStream(new File("x.txt"));
f.write("hello\n".getBytes());
f.close();