web-dev-qa-db-ja.com

Javaを使用してリモートシステムからファイルを読み取る方法は?

1台のコンピューターでファイルをコピーし、他のコンピューターからそのファイルにアクセスする必要があります。これに使用するプロトコルまたはテクノロジはわかりません。このためのヒントを教えてください。

更新:

Ubuntu Linuxシステムを使用しています。私はコードを使用しました:

File f = new File("//192.168.1.157/home/renjith/picture.jpg");// 192.168.1.157 is the ip of the computer, where I have the picture file
Image image = ImageIO.read(f);

しかし、それは例外を与えています:

javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.Java:1275)

Renjithフォルダも共有しています。

14
user236919

リモートマシン上のファイルにアクセスする方法はいくつもありますが、それらは事実上すべて、最初に何らかの方法でファイルを提供するように設定されているリモートマシンに依存しています。 Java経由でファイルにアクセスする場合、最も簡単な方法はおそらく、リモートマシンにHTTPサーバーをセットアップし(これは、さまざまなプラットフォームでApache HTTPサーバーを使用して非常に簡単に行うことができます)、次にApache Commons HTTPClientを使用することです。クライアント側Java app。これらをインストールまたは構成する方法の詳細な説明は、通常、スタックオーバーフローの範囲を超えており、少なくともより具体的な質問が必要になります

9
Jherico

HTTPはオプションです。ただし、これらが同じLAN上のWindowsマシンである場合は、ファイル共有を介してリモートマシン上のディレクトリを公開し、通常のファイルパスを介してファイルにアクセスする方が簡単です。同様に、これらがUnixのようなマシンである場合、NFSを使用している場合は通常のファイルパスを使用できます。 FTPはさらに別のオプションです。

6
Jacob

リモートコンピューターが同じネットワーク内にあり、Javaコードが実行されているコンピューターへの共有フォルダーにある場合、このコードにアクセスしてみてください。

File file = new File("\\\\Comp-1\\FileIO\\Stop.txt");

ここでComp-1は、ネットワーク内のファイルを含むマシンのDNS名です!!!

5
Alivia

あなたは試すかもしれません:

URL url = new URL("file://192.168.1.157/home/renjith/picture.jpg");
Image image = ImageIO.read(url); 
4
Paul Jackson

最初にそのパスをマウントしてからロードすることができます。 :

subst x: \\192.168.1.157

その後:

File f = new File("x:\\home\\renjith\\picture.jpg");
Image image = ImageIO.read(f)

うまくいくはずです。

1
Geo

Javaのjcifs-1.3.15.jar jarを使用して、リモートから読み取り、リモートに書き込むことができますが、最初にリモートシステムから場所を共有する必要があります。それが可能です。

try{
            String strLine="";    
            NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("WORKGROUP", "username", "passwd"); // Authentication info here, domain can be null
    //        try (InputStream is = new SmbFile("smb://DESKTOP-0xxxx/usr/local/cache/abc.txt", auth).getInputStream()) {
            try (InputStream is = new SmbFile("smb://xx.xx.xx.xxx/dina_share/abc.txt", auth).getInputStream()) {
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
            while ((strLine = br.readLine()) != null) {
                System.out.println(strLine);
            }
            } catch (IOException e) {
                e.printStackTrace();
            }
            String smbURL="smb://xx.xx.xx.xxx/dina_share/abcOther.txt";
            SmbFileOutputStream fos = new SmbFileOutputStream(new SmbFile(smbURL,auth));
            byte bytes[]="Wellcome to you".getBytes();
            fos.write(bytes);
        }catch(Exception e){
            e.printStackTrace();
        }
0
Dinanath Parit

ディレクトリを共有し、ファイルthruogh Javaコードにアクセスして、これを試してください:

File f = new File("//10.22.33.122/images")

File[] files = f.listFiles(new FilenameFilter() {
    public boolean accept(File dir, String name) {
        // Specify the extentions of files to be included.
        return name.endsWith(".bmp") || name.endsWith(".gif");
    }
});

// get names of the files
String[] fileNamesArray = null; 
for (int indx = 0; indx < files.length(); indx++) {
    fileNamesArray[indx] = files[indx].getName();
}

return fileNamesArray; 
0
srinannapa