好的,所以我正在尝试在Java中使用新的Files.write方法。 Here is a link
它说StandardOpenOption是可选的,但是每次我把它留空,即使我把东西放在那里我也会遇到编译器错误。例如......
try{
Files.write("example.txt",byte[] byteArray);
}
catch(Exception e){}
将导致文件类型中的方法write(Path,byte [],OpenOption ...)不适用于参数(Path,String)
答案 0 :(得分:3)
这与NIO无关,与语言语法有关。你有:
Files.write("example.txt",byte[] byteArray);
我不知道你的意图是什么,但你不能在那样的函数参数列表中声明一个变量。你的意思可能是:
byte[] byteArray = ...; // populate with data to write.
Files.write("example.txt", byteArray);
要获得更正式的观点,请从JLS 15.12开始浏览JLS。语言中最终没有ArgumentList
模式可以接受LocalVariableDeclarationStatement
。
答案 1 :(得分:3)
如果我将其更改为
try{
Files.write("example.txt", new byte[0]);
} catch(Exception e){}
我看到了
找不到合适的写入方法(String,byte [])
Files.write(“example.txt”,new byte [0]);
^ method Files.write(Path,Iterable,Charset,OpenOption ...)不适用(实际参数String不能通过方法调用转换为Path 转换)
方法Files.write(Path,byte [],OpenOption ...)不适用(实际参数String不能通过方法调用转换转换为Path)
1错误
如果我改为
Path path = FileSystems.getDefault().getPath("logs", "access.log");
try{
byte[] byteArray = ...; // populate with data to write.
Files.write(path, byteArray);
} catch(Exception e){}
然后我没有编译器警告。
所以,你需要: