Подтвердить что ты не робот

Как читать файл из удаленной системы с помощью java?

У меня есть файл, скопированный на одном компьютере, и мне нужно получить доступ к файлу с другого компьютера. Я не уверен, какой протокол или какую технологию использовать для этого? Пожалуйста, предоставьте мне какие-либо намеки на это.

Обновление:

Я использую систему 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.

4b9b3361

Ответ 1

Существует множество способов доступа к файлам на удаленных компьютерах, но они практически все зависят от удаленного компьютера, который был настроен для предоставления файла в некотором роде. Если вы хотите получить доступ к файлам через java, самым простым способом, вероятно, будет настройка HTTP-сервера на удаленном компьютере (это можно сделать довольно легко, используя HTTP-сервер Apache на разных платформах), а затем используя HTTPClient Apache Commons на клиентская java-приложение. Дальнейшее обсуждение того, как их установить или настроить, как правило, выходит за рамки и, по крайней мере, потребует более конкретного вопроса

Ответ 2

HTTP - это опция. Однако, если это компьютеры Windows в одной и той же локальной сети, было бы проще разоблачить каталог на удаленной машине через общий ресурс файла и получить доступ к файлу через обычный путь к файлу. Аналогично, если это Unix-подобные машины, вы можете использовать обычные пути к файлам, если используете NFS. FTP еще один вариант.

Ответ 3

если удаленный компьютер находится в той же сети и в общей папке на компьютере, на котором запущен ваш Java-код, попробуйте этот фрагмент кода для доступа к нему

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

здесь Comp-1 - это DNS-имя машины, содержащей файл в сети.

Ответ 4

Вы можете попробовать:

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

Ответ 5

Вы можете попытаться сначала установить этот путь, а затем загрузить его. Сделайте a:

subst x: \\192.168.1.157

а затем:

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

Он должен работать.

Ответ 6

Поделитесь каталогом и получите доступ к файлу thruogh java code попробуйте следующее:

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; 

Ответ 7

С помощью jcifs-1.3.15.jar jar в java вы можете читать с удаленного компьютера и писать на удаленный, но сначала вам нужно разделить местоположение с удаленной системой, тогда это возможно.

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

Ответ 8

Сопоставьте свой IP-адрес с сетевым диском и попробуйте сказать, что буква диска X,

тогда код изменяется на File f = new File("x:\\home\\renjith\\picture.jpg");

Infact ваш файл уже загружен в объект f, попробуйте передать значение пути f.getAbsolutePath() на консоль и посмотрите.. Фактическая ошибка с ImageIO