web-dev-qa-db-ger.com

Wie lese ich eine Datei von einem entfernten System mit Java?

Ich habe eine Datei auf einem Computer kopiert und muss von einem anderen Computer aus auf die Datei zugreifen. Ich bin mir nicht sicher, welches Protokoll oder welche Technologie ich dafür verwenden soll? Bitte geben Sie mir Hinweise dazu.

Aktualisieren:

Ich benutze Ubuntu Linux System. Ich habe den Code benutzt:

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

Aber es gibt eine Ausnahme:

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

Ich habe auch Renjith Ordner freigegeben.

13
user236919

Es gibt verschiedene Möglichkeiten, auf Dateien auf Remote-Computern zuzugreifen. Sie sind jedoch praktisch alle davon abhängig, dass der Remote-Computer so eingerichtet wurde, dass er die Datei zuerst bereitstellt. Wenn Sie auf Dateien über Java zugreifen, ist es wahrscheinlich die einfachste Methode, einen HTTP-Server auf dem Remote-Computer einzurichten (dies kann ziemlich einfach mit dem Apache-HTTP-Server auf einer Vielzahl von Plattformen durchgeführt werden) und dann mit Apache Commons HTTPClient auf dem clientseitige Java-App. Weitere Diskussionen, wie diese installiert oder konfiguriert werden, liegen im Allgemeinen außerhalb des Umfangs des Stack-Überlaufs und würden zumindest eine spezifischere Frage erfordern

8
Jherico

HTTP ist eine Option. Wenn es sich jedoch um Windows-Computer in demselben LAN handelt, ist es einfacher, das Verzeichnis auf dem Remote-Computer über eine Dateifreigabe zugänglich zu machen und über einen regulären Dateipfad auf die Datei zuzugreifen. Wenn es sich hierbei um Unix-ähnliche Maschinen handelt, können Sie bei Verwendung von NFS reguläre Dateipfade verwenden. FTP ist eine weitere Option.

5
Jacob

wenn sich der Remote-Computer im selben Netzwerk befindet und sich in einem freigegebenen Ordner auf dem Computer befindet, auf dem Ihr Java-Code ausgeführt wird, versuchen Sie es mit diesem Code

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

hier ist Comp-1 der DNS-Name des Rechners, der die Datei im Netzwerk enthält !!!

4
Alivia

Sie könnten versuchen:

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

Sie können versuchen, diesen Pfad zuerst einzuhängen und dann zu laden. Mach ein:

subst x: \\192.168.1.157

und dann:

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

Es sollte funktionieren.

1
Geo

Sie können mit Java in Java jcifs-1.3.15.jar aus der Ferne lesen und in die Ferne schreiben, aber zuerst müssen Sie den Standort von einem Remote-System aus freigeben, dann ist es möglich. 

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

Geben Sie das Verzeichnis frei und greifen Sie auf die Datei zu, indem Sie den Java-Code Verwenden. Versuchen Sie Folgendes:

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