2015-04-10 4 views
-1

Я использую следующий код, но не покажущий ожидаемый результат.Создать файл на удаленной машине в java

public class FileTestOnSever { 
public static void main(String[] args) { 
    File file = new File("http://10.44.25.30:success.txt"); 
    if (!file.exists()) { 
     try { 
      file.getParentFile().mkdirs(); 
      // file.createNewFile(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

} 

}

+0

Это создает папку с именем 'http:' - за исключением случаев, когда вы используете Windows, где имена файлов не могут содержать ':', где 'mkdirs' вернет false. – immibis

ответ

2

@TravoloPerUno является правильным, файловая система должна быть доступна.

Сказать, что акции SMB (?) Должны работать в готовом виде на Windows (какую ОС вы используете?). Вот пример, который работал для меня:

// smb shared directory 
new File("\\\\hostname\\c$\\workspace\\foobar1.txt").createNewFile(); 
// or with a mapped network drive 
new File("Z:\\workspace\\foobar2.txt").createNewFile(); 
// or with URIs 
new File(new URI("file:////hostname/c$/workspace/foobar3.txt")).createNewFile(); 
new File(new URI("file:///Z:/workspace/foobar4.txt")).createNewFile(); 

Используйте mkdirs(), если вы хотите, каталоги, вместо файла.

+0

Что такое c $ означает? – varpekv

+0

Привет @Kunal - http://bit.ly/1DOkt1u - в основном это означает, что 'C $' каталог является скрытой общей папкой. В этом случае это диск «C». –

-2

Вы, вероятно, не может это сделать. File(String pathname) не может кроме http://... Похоже, вы хотите URI, но File(URI uri) может принимать только file:URI в качестве параметра.

См. http://docs.oracle.com/javase/7/docs/api/java/io/File.html.

+0

Он не использует 'Файл (URI) .' – EJP

+0

Он ожидал использовать его, не так ли? Я имею в виду, что он не может писать 'http: // ...' как путь. 'http: // ..' выглядит как URI. Но 'File' может принимать только файл:'. Это то, что я имею в виду. –

0

От «удаленного», вы имеете в виду «вне» вашей локальной сети?

Если он находится вне вашей локальной сети, удаленная машина должна иметь доступ к своей файловой системе для удаленных клиентов, используя такие протоколы, как NFS и Samba. Это правда, вы можете использовать свой метод, исправив путь к файлу. Это зависит от протокола, используемого в удаленной системе.

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

+0

удаленные средства в сети LAN – varpekv

+0

Возможно ли это URL url = новый URL ("file: //192.168.1.157C: //tmp//myfile.txt"); – varpekv

+0

Вы можете попробовать «\\\\ 192.168.1.157 \\ Share Folder \\ tmp \\ myfile.txt» или «файл: ////192.168.1.157/Share Folder/tmp/myfile.txt» – TavoloPerUno

1
File file = new File("http://10.44.25.30:success.txt"); 

Это не может работать. Аргументом для этого конструктора является имя файла, а не URL. И этот URL-адрес даже не является допустимым URL-адресом HTTP: окончательный двоеточие должно быть /.

Существует конструктор File(URI), но он специально задокументирован, чтобы принимать только file: URI.

В основном File не говорит HTTP. Вам нужно будет использовать имя файла, имеющее значение на клиенте, например. (для Windows) \\\\10.44.25.30\\success.txt.

+0

Это тоже моя точка :). –