我的java编译器找不到java.nio.file包.考虑:
import java.nio.file.*;
public class Test {
public static void main(String[] args) {
Path currentRelativePath = Paths.get("");
}
}
Run Code Online (Sandbox Code Playgroud)
用...编译
bash$ javac Test.java
Run Code Online (Sandbox Code Playgroud)
给
Test.java:1: package java.nio.file does not exist
import java.nio.file.*;
^
Test.java:5: cannot find symbol
symbol : class Path
location: class Test
Path currentRelativePath = Paths.get("");
^
Test.java:5: cannot find symbol
symbol : variable Paths
location: class Test
Path currentRelativePath = Paths.get("");
^
3 errors
Run Code Online (Sandbox Code Playgroud)
我正在使用Ubuntu 12.04,我认为我安装了JDK 7(参见:package java.nio.file不存在)
bash$ java -version
java version …Run Code Online (Sandbox Code Playgroud) 我想使用指定的CharSet将一个CharSequence写入OutputStream.基本上,当调用write(String)时,使用相同CharSet初始化的Writer会做什么.
问题是,有很多CharSequences要写,有些很大.更复杂的是,可以将所有内容写入多个OutputStream.我可以通过使用(实际上我目前已经以这种方式实现)轻松实现它:
byte[] rawBytes = CharSequence.toString().getBytes(CharSet)
for (OutputStream out : outputTargets) {
out.write(rawBytes);
}
Run Code Online (Sandbox Code Playgroud)
但显然String在这里是完全不需要的垃圾对象,byte []数组也是如此.我正在寻找一种方法,允许我直接进行编码而不需要中间对象.令人惊讶的是,这似乎是不可能的 - 无论我在JRE中看到CharSequence被接受的地方,它都会在任何工作完成之前迅速转换为字符串.
CharSet的大部分(全部?)转换工作似乎都是在非公共类中完成的,所以我没有找到任何方式以透明和合法的方式访问任何一个.
如何避免垃圾/ JRE的CharSet编码设施直接使用?