引数としてFileを受け入れる関数があります。文字列データを関数に渡すために、新しいファイルを作成/書き込みしたくありません(ファイルシステムへの書き込みアクセス権がありません)。 Stringデータがファイルに存在しないことを追加する必要があります(したがって、ファイルからデータを読み取ることができません)。
Streamsを使用して、それらをFileオブジェクトに「キャスト」できますか?
番号;クラスFile
のインスタンスは、ファイルシステムのパスを表します。したがって、その関数はファイルでのみ使用できます。しかし、代わりにInputStream
をとるオーバーロードがありますか?
通常、メソッドがファイルを受け入れるとき、ストリームを受け入れる別のメソッドが近くにあります。そうでない場合は、APIのコーディングが不適切です。それ以外の場合、一時ファイルを使用できます。多くの場合、通常は許可が付与されます。アプレットの場合は、 書き込み許可の要求 を使用できます。
例:
try {
// Create temp file.
File temp = File.createTempFile("pattern", ".suffix");
// Delete temp file when program exits.
temp.deleteOnExit();
// Write to temp file
BufferedWriter out = new BufferedWriter(new FileWriter(temp));
out.write("aString");
out.close();
} catch (IOException e) {
}
File Javaのオブジェクトは、ファイル自体ではなく、ディレクトリまたはファイルへのパスの表現です。 File
オブジェクトを作成するためにファイルシステムへの書き込みアクセス権は必要ありません。実際にファイルに書き込む場合にのみ必要です(たとえば FileOutputStream を使用)
File
クラスは、ファイルの「アイデア」を表し、I/Oに使用する実際のハンドルではありません。これが、File
クラスに.exists()
メソッドがあり、ファイルが存在するかどうかを通知する理由です。 (どうすれば、存在しないFile
オブジェクトを持つことができますか?)
対照的に、new FileInputStream(new File("/my/file"))
を構築すると、実際のストリームからバイトを読み取ることができます。