не удается передать файл через сокет, Java - PullRequest
0 голосов
/ 20 мая 2011

вот небольшой код.Этот класс работает на двух компьютерах: одна сторона отправляет файл (send ()), а другая получает его (read ()).Я знаю, что send () работает, потому что когда я запускаю решение для школы (его назначение), оно может загрузить файл от меня, но по какой-то причине, когда я пытаюсь загрузить файл, создается (конструктором), но read ничего не пишетв файл.

public class SendFile extends BasicMessage implements Message{

private File _file;

public SendFile(CommandEnum caption){
    super(caption);
}

public SendFile(String file){
    super(CommandEnum.FILE);
    _file = new File(FMDataManager.instance().getSharedDirectory(),file);
}

public void send (DataOutputStream out) throws IOException{
    out.writeUTF(_caption.toString());
    out.writeLong(_file.length());
    FileInputStream fis = new FileInputStream(_file);
    BufferedInputStream bis = new BufferedInputStream(fis);
    for (int i=0; i<_file.length(); i++)
        out.write(bis.read());
    out.writeUTF(CommandEnum.END.toString());
}

public void read(DataInputStream in) throws IOException{
    FileOutputStream fos = new FileOutputStream(_file);
    BufferedOutputStream bos = new BufferedOutputStream(fos);
    in.readUTF();
    long size = in.readLong();
    for (int i=0; i<size; i++)
        bos.write(in.read());
    System.out.println(in.readUTF());
}

}

есть идеи?спасибо

1 Ответ

0 голосов
/ 20 мая 2011

Вы должны закрыть свои потоки, чтобы убедиться, что это правильно.В вашем конкретном случае содержимое файла, вероятно, все еще находится внутри BufferedOutputStream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...