ファイルを引数として受け入れる関数があります。私は文字列データを関数に渡すために新しいファイルを作成したり書いたりしたくない(ファイルシステムへの書き込みアクセス権がない)。 Stringデータがファイルに存在しないため、ファイルからデータを読み込むことはできません。Javaの文字列からメモリ内にFileオブジェクトを作成します
Streamsを使用してFileオブジェクトに「キャスト」できますか?
ファイルを引数として受け入れる関数があります。私は文字列データを関数に渡すために新しいファイルを作成したり書いたりしたくない(ファイルシステムへの書き込みアクセス権がない)。 Stringデータがファイルに存在しないため、ファイルからデータを読み込むことはできません。Javaの文字列からメモリ内にFileオブジェクトを作成します
Streamsを使用してFileオブジェクトに「キャスト」できますか?
ません。クラスFile
のインスタンスは、ファイルシステム内のパスを表します。したがって、その関数はファイルでのみ使用できます。しかしおそらく、代わりにInputStream
がかかるオーバーロードがありますか?
いいえ:/過負荷機能なし –
FileReader r = new FileReader(file);
ファイルリーダーを使用してファイルをロードし、その内容を文字列バッファーに書き込みます。
上記のリンクはあなたにこれを実現する方法の例を示します。この回答の他の記事では、実際のファイルを変更する予定がない限り、ファイルをメモリにロードすると書込みアクセスは必要ありません。
File Javaのオブジェクトは、ファイル自体ではなく、ディレクトリまたはファイルへのパスを表します。 File
オブジェクトを作成するためにファイルシステムへの書き込みアクセス権を持たなくても、実際にファイルに書き込む場合にのみ必要です(FileOutputStreamなど)
File
クラスは、 I/Oに使用する実際のハンドルではありません。このため、File
クラスにはファイルが存在するかどうかを示す.exists()
メソッドがあります。 (どうしてFile
オブジェクトが存在しないのですか?
これに対して、new FileInputStream(new File("/my/file"))
を作成すると、実際にバイトを読み込むストリームが得られます。
良い点;しかし、質問に答えることはありません。 – Jus12
通常、メソッドがファイルを受け入れる場合、ストリームを受け取る別のメソッドが近くにあります。そうでない場合、APIはひどくコード化されています。それ以外の場合は、一時ファイルを使用することができます。通常、多くの場合、許可が与えられます。アプレットの場合は、request write permissionとすることができます。
例:
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) {
}
書き込み権限をリクエストできません(Google App Engine) –
'File'オブジェクトを取るコードをリンク/ポストすることはできますか?答えが述べているように、 'File'オブジェクトはファイルシステム内の場所への参照と似ていて、実際のファイルなしではシミュレートするのが難しいでしょう。しかし、あなたの関数が 'FileReader'か' FileInputStream'を取った場合、非ファイル入力を受け入れるようにコードを簡単に変更することができます。 – 101100
メモリマップファイルを選択できます。これらは、Javaプログラムがメモリから直接コンテンツにアクセスできるJavaの特殊ファイルです。詳細については、次のリンクを参照してください。http://javarevisited.blogspot.com/2012/01/memorymapped-file-and-io-in-java.html – Bikku