この質問にはすでに答えがあります。
私はこの単純なJavaコードを持っています:
import java.nio.file.*;
import java.io.*;
public class Write {
public static final String PATH = "/home/user/Desktop/hello.txt";
public static void main(String[] argv) {
Path path = Paths.get(PATH);
OutputStream out;
try {
out = Files.newOutputStream(path, CREATE, APPEND);
} catch (IOException e) {
System.out.println("Caught IOException: "+e.getMessage());
}
}
}
このエラーのためにコンパイルできません。
Write.java:14: error: cannot find symbol
out = Files.newOutputStream(path, CREATE, APPEND);
^
symbol: variable CREATE
location: class Write
Write.java:14: error: cannot find symbol
out = Files.newOutputStream(path, CREATE, APPEND);
^
symbol: variable APPEND
location: class Write
2 errors
通常これは私がいくつかのものをインポートするのを忘れていたことを意味します。 私も追加しようとしました:
import java.nio.file.StandardOpenOption
しかし、私は同じエラーが出ます。
編集:さて、私は@rmlanのアドバイスに従って問題を解決しました。私はそれらの定数を逃しました。ありがとう。
からインポートを変更します。
import java.nio.file.StandardOpenOption
に
import static java.nio.file.StandardOpenOption.*
StandardOpenOptionクラスの列挙型定数をそのまま使用できるようにするには(修飾なしで)、
Files.newOutputStream(path, CREATE, APPEND);
そのクラスからすべてのenum定数を静的にインポートする必要があります(または少なくとも使用している特定のものを静的にインポートする必要があります)。
あるいは他の答えが述べたように、あなたが追加したインポートを保持することができますが、その場合あなたはしなければならないStandardOpenOptionの列挙型定数への参照を完全修飾します。
Files.newOutputStream(path, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
インポートを静的にする必要があります。
import static java.nio.file.StandardOpenOption.*;
またはStandardOpenOptionsの静的参照を使う
import java.nio.file.StandardOpenOption;
Files.newOutputStream(path, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
これらは静的メンバーです。どちらかに所属するクラスを先頭に追加する必要があります。
StandardOpenOption.APPEND
または静的インポートをする
import static java.nio.file.StandardOpenOption.APPEND;
これを使って
import static java.nio.file.StandardOpenOption.CREATE;
import static java.nio.file.StandardOpenOption.APPEND;
または
import static java.nio.file.StandardOpenOption.*
の代わりにimport java.nio.file.StandardOpenOption