web-dev-qa-db-fra.com

Comment lire un fichier depuis un système distant en utilisant java?

J'ai un fichier copié sur un ordinateur et je dois accéder au fichier à partir d'un autre ordinateur . Je ne sais pas quel protocole ni quelle technologie utiliser pour cela?.

Mettre à jour:

J'utilise le système Linux Ubuntu. J'ai utilisé le code:

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

Mais cela donne une exception:

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

J'ai partagé le dossier renjith aussi.

13
user236919

Il existe plusieurs moyens d'accéder aux fichiers sur des ordinateurs distants, mais ils dépendent pratiquement tous du fait que l'ordinateur distant a été configuré pour fournir le fichier d'une manière ou d'une autre. Si vous souhaitez accéder à des fichiers via Java, la méthode la plus simple serait probablement de configurer un serveur HTTP sur la machine distante (vous pouvez le faire assez facilement en utilisant le serveur HTTP Apache sur diverses plates-formes), puis en utilisant Apache Commons HTTPClient sur le serveur. application Java côté client. Une discussion plus approfondie sur la façon d’installer ou de configurer ces derniers va généralement au-delà de la portée du dépassement de capacité et nécessiterait au moins une question plus spécifique.

8
Jherico

HTTP est une option. Toutefois, s'il s'agit de machines Windows sur le même réseau local, il serait plus facile d'exposer le répertoire sur la machine distante via un partage de fichiers et d'accéder au fichier via un chemin de fichier normal. De même, si ce sont des machines de type Unix, vous pouvez utiliser des chemins de fichiers classiques si vous utilisez NFS. FTP est encore une autre option.

5
Jacob

si l'ordinateur distant est sur le même réseau et sur un dossier partagé de l'ordinateur sur lequel votre code Java est exécuté, essayez cette partie de code pour y accéder

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

ici Comp-1 est le nom DNS de la machine contenant le fichier sur le réseau !!!

4
Alivia

Vous pourriez essayer:

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

Vous pouvez d'abord essayer de monter ce chemin, puis de le charger. Fait une :

subst x: \\192.168.1.157

et alors:

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

Ça devrait marcher.

1
Geo

Vous pouvez lire à distance et écrire à distance à l'aide de jcifs-1.3.15.jar jar en Java, mais vous devez tout d'abord partager l'emplacement du système distant, ce qui est possible. 

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

Partagez le répertoire et accédez au fichier via le code Java Essayez celui-ci:

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