4

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);
    }
}
4

2 に答える 2