2013-12-23 2 views
2

Я новичок в программировании сокетов. Я пытаюсь написать файл на сервере, но мой код выдает исключение:java.io.FileNotFoundException: (Система не может найти указанный путь)

java.io.FileNotFoundException: Welcome-PC\IndiraSharing\hadoop.txt (The system cannot find the path specified) 

Вот мой код.

Socket s; 

    ServerSocket server = new ServerSocket(5555); 

    String serveradd; 
    serveradd=s.getInetAddress().getHostName(); 
    // System.out.println("Server accepted client"); 
    InputStream input = s.getInputStream(); 
    BufferedReader inReader = new BufferedReader(new InputStreamReader(s.getInputStream())); 
    BufferedWriter outReader = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 
    String filename = inReader.readLine(); 
    if (!filename.equals("")){  

     outReader.write("READY\n"); 
     outReader.flush(); 
    } 

    FileOutputStream wr = new FileOutputStream(new File(serveradd+"\\IndiraSharing/" +  filename)); 
    byte[] buffer = new byte[s.getReceiveBufferSize()]; 
    int bytesReceived = 0; 
    while((bytesReceived = input.read(buffer))>0) 
    { 
      wr.write(buffer,0,bytesReceived); 
    } 
+0

* «Это мой код». * Где ваш вопрос? –

+0

Как вы управляете своей программой? IDE, командной строки? Как выглядит ваша файловая структура? –

+0

Его не полный код..show полный код клиента и на стороне сервера –

ответ

2

В каталоге не найдено. Сообщение запутанно, потому что оно говорит о «файле», но в Java IO, каталог также является файлом.

При запуске:

File dir = new File(serveradd+"\\IndiraSharing") 
System.out.println(dir.exists()); 

Это будет печатать:

false 

Вы могли бы попытаться создать структуру каталогов:

dir.mkdirs(); 

Кроме того, проверьте абсолютный путь, что вы ожидаете:

System.out.println(dir.getAbsolutePath()); 
+1

его не работает. такая же проблема появилась снова. – Indu

+1

Это не предназначалось для решения. Он был предназначен, чтобы помочь вам отлаживать, сужая проблему, поэтому * вы можете ее решить. –

0

Welcome-PC\IndiraSharing\hadoop.txt - относительный путь, и я уверен, что вы должны указать абсолютный путь для вашей программы сокетов. BTW, каталог должен существовать, даже если вы хотите создать новый файл.

Смежные вопросы