2012-01-17 5 views
0

Это мой первый пост. Я просто взять обновление, чтобы написать то, что я сделалРабочий каталог filesharing

import java.io.*; 
import java.rmi.*; 
import javax.swing.JOptionPane; 
public class FileClient{ 
public static void main(String a[]) { 

    Object[] choice = {"download", "upload"}; 
    int valg = JOptionPane.showOptionDialog(null, "What do u want to do?", null, JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, ""); 
    switch(choice){ 
     case 0: 
     try { 
     String filename = JOptionPane.showInputDialog("what do u want to copy? "); 
     String name = "rmi://" + "localhost" + "/FileServer"; 
     FileInterface fi = (FileInterface) Naming.lookup(name); 
     byte[] filedata = fi.downloadFile(ServerDirectory + filnavn); 
     File file = new File(filnavn); 
     BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file.getName())); 
     output.write(filedata,0,filedata.length); 
     output.flush(); 
     output.close(); 
     System.out.println(file.getAbsolutePath()); 

    } catch(Exception e) { 
     System.err.println("FileServer exception: "+ e.getMessage()); 
     e.printStackTrace(); 
    } 
        break; 
       case 1: 

        break; 
    } 
} 
} 

У меня есть проблема в том, что я не могу выбрать рабочий каталог в коде.

Так что я узнал, что и не может выбрать папку рабочего каталога Java, так что я просто положить в трактах так, где я могу получить файлы, и где я хочу, чтобы загрузить их:

String PathToDownloadFolder = ("//C:/Hello/") 
String PathToWhereIGetTheFile = ("//C:/server/") 
byte[] filedata = cf.downloadFile(PathToWhereIGetTheFile + valgtFil); 
BufferedOutputStream output = new BufferedOutputStream 
        (new FileOutputStream(PathToDownloadFolder + file.getName())); 
+0

Я попробовал String ClientDirectory = («C: // Users/Thomas/hei /»); Файл файла = новый файл (ClientDirectory, fileName); в FileImpl.java. Не работает –

+0

«Не работает» не является хорошим описанием того, что происходит. Что вы хотите, чтобы сделать, что он делает? Если какое-либо исключение, отправьте трассировку стека. Изменение рабочего каталога во время выполнения невозможно. –

+0

Я хочу выбрать, где скачать файл. Я хочу папку SERVER и папку DOWNLOAD, поэтому я могу получить файл туда и обратно. файлы, которые я копирую из папки SERVER, сохраняются в папке проекта, и я этого не хочу. И «Не работает», я имею в виду, что файл сохраняется в папке проекта, а не в папке пути, я выбираю –

ответ

0

Вы построить абсолютный путь с

File file = new File(ClientDirectory + fileName); 

Но вы по-прежнему использовать имя файла при создании потока:

BufferedInputStream input = new BufferedInputStream(new FileInputStream(fileName)); 

Заменить эту строку на

BufferedInputStream input = new BufferedInputStream(new FileInputStream(file)); 

И должно быть лучше.

Таким образом, вы должны прочитать Java IO tutorial, потому что вы не используете файлы и потоки правильно. Например, вы не читаете все байты вашего файла, и вы не закрываете потоки в блоках finally.

+0

Я собираюсь прочитать этот учебник, но это не сработало. Он по-прежнему хочет скопировать файл в папку проекта. –

+0

Код, который вы вставили, является кодом, который ** читает ** файл. У вас должна быть аналогичная ошибка в коде, который ** записывает ** файл. –

+0

Итак, это означает, что либо вывод равен null, либо filedata равен null. Если вы хотите стать серьезным разработчиком, вам лучше научиться отлаживать ваши программы. –

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