sftp にアクセスする方法として VFS を見つけました。動作しているように見えますが、すべての例はローカル ファイルを想定しています。代わりに、メモリにデータがあります。メソッドcopyFrom(FileObject)のみが表示され、ストリームまたはバッファーを受け入れるオーバーロードはありません...したがって、ほぼ正しいように聞こえるのでramを試しました(一部のドキュメントは害はありませんが、罰金はありません)。次のテストは成功します. sftp FileObject へのコピーも機能しました。
質問。次の出力が得られます: INFO: Using "C:\Users\myname\AppData\Local\Temp\vfs_cache" as temporary files store.
-- 実際に一時ファイルを書き込んでいますか?? それは私が避けようとしていたことです (これが実行される Unix サーバーでパーミッション/同時実行性の問題が発生する可能性があるため)。もしそうなら、どうすれば完全にメモリ内で行うことができますか?
// try to copy a string from memory into a FileObject
public class VFSTest {
public static void main(String[] args) throws IOException {
String hello = "Hello, World!";
FileObject ram = VFS.getManager().resolveFile("ram:/tmp");
OutputStream os = ram.getContent().getOutputStream();
os.write(hello.getBytes());
ram.getContent().close();
FileObject local = VFS.getManager().resolveFile("C:\\foo.txt");
local.copyFrom(ram, Selectors.SELECT_SELF);
}
}