Рабочий каталог обмена файлами - PullRequest
0 голосов
/ 17 января 2012

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

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

1 Ответ

0 голосов
/ 17 января 2012

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

File file = new File(ClientDirectory + fileName);

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

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

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

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

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

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

...