Basics - reading/writing remote files using Java

前端 未结 4 1769
闹比i
闹比i 2020-12-05 16:47

I started with requirement of reading and writing files in from/in a directory on a remote Ubuntu machine.

First, I wrote a Java program that could read,write files

4条回答
  •  离开以前
    2020-12-05 17:22

    To answer your question - No, your expectation isn't valid.

    Retrieving files from a remote server is inherently reliant on the services running on that server. To retrieve a file from a remote server, the remote server needs to be expecting your request for a file.

    The cases you listed in your question (using jsch and sftp, using a sender and receiver Java sockets) that you have achieved already, are essentially the same as this:

    File inputFile = new File(
                "\\172.17.89.76\EBook PDF");
    

    The only difference is that Java is using the native os's built in support for reading from a windows style share. The remote windows machine has a sharing service running on it (just like Samba on linux, or a java socket program) waiting for your request.

    From the Java API docs on File (http://docs.oracle.com/javase/6/docs/api/java/io/File.html)

    The canonical pathname of a file that resides on some other machine and is accessed via a remote-filesystem protocol such as SMB or NFS ...

    So essentially "Good old Java I/O" is more or less just a wrapper over some common protocols.

    To answer the second part of your question (what is the best I can do to read/write remote files using Java?), that depends on what remote system you are accessing and, more importantly, what services are running on it.

    In the case of your target remote machine being an Ubuntu machine, I would say the best alternative would be to use Jsch. If your target machine can be either a windows machine or a linux machine, I would probably go for running Java sockets on the two machines (obviously dependant on whether you have access to installing your app on the remote machine).

    Generally speaking, go with the common lowest denominator between your target systems (in terms of file sharing protocols).

提交回复
热议问题