私は、リモートのUbuntuマシンのディレクトリから/ディレクトリ内でファイルを読み書きするという要件から始めました。
最初に、リモートWindowsマシン(LAN)の共有フォルダーからファイルを読み書きできるJavaプログラムを作成しました。ここで、このようなものは私の(ローカル)Windowsマシンで動作します:
File inputFile = new File(
"\\172.17.89.76\EBook PDF");/*ignore the syntax errors, the loc is just for the idea*/
さて、リモートのUbuntuマシンを考えると、マシンがLAN上にないため、明らかにこのようなことはできません(LAN上にある場合でもそれができるかどうかはわかりません!)。したがって、私は次のアプローチを試しました:
- Jschを使用して、2台のマシン(ローカル-リモートLinux、リモートLinux-リモートLinux)間の信頼を確立し、sftpを使用してファイルを書き込みます。(完了)
- 2台のマシンでソケットを実行-1つの送信者、1つの受信者(両方ともJava)(完了)
- Windows(LAN)マシンのコードスニペットと同様にI / Oを達成しようとしています(達成されていません)
これらすべてを行っている間、私は多くの質問をしたり、多くの投稿を読んだりしました、そして私は基本に何かが欠けていると感じました:
- IOを実現するには、ある種の信頼構築(2台のマシン間)ユーティリティが必要になります。しかし最後に、マシンやネットワークなどに関係なく、与えられたスニペットのようなコードを書きたいと思います。
- Jschソリューションと提案された他のソリューション(URLを介したhttp、ftpなどの使用)は、最終的にリモートマシンで実行されているいくつかのサービスを使用しています。言い換えれば、JavaIOがリモートファイルシステムへのアクセスに使用されているわけではありません。古き良きI/Oを使用するのではなく、サービスに依存しているので、これは私には魅力的ではありません。
- Samba、SSHFSも登場しましたが、混乱を招きました。しかし、私はそれらを私の目的の解決策とは見ていません!
繰り返しになりますが、Java I / O(プレーンまたはnioのいずれか、どちらも問題ありません)を使用してコードを記述します。このコードは、ftp、httpなどのプロトコルやソケットの送受信モデルを介したサービスを使用せずに、リモートファイルの読み取りと書き込みを簡単に行うことができます。私の期待は有効ですか?
- そうでない場合、Javaを使用してリモートファイルを読み書きするために私ができる最善の理由と方法は何ですか?
- はいの場合、同じことを達成する方法!
PS:質問を正確に提示するために詳しく説明する必要がある場合に備えて、コメントしてください。