Ошибка при загрузке файла в java -java.net - PullRequest
0 голосов
/ 21 июня 2010

Я пытаюсь скачать файл, используя сокет и сервер в Java.

myClient = new Socket(address,port);
   myClient.setSoTimeout(MyFileManager.TIME_OUT);
   in = new DataInputStream(myClient.getInputStream());
   out = new DataOutputStream(myClient.getOutputStream());
File requestedFile = new File(_fileManager.getDir()+fileName); //creating the new file
 //         requestedFile.createNewFile(); //now it does
          fos = new FileOutputStream(requestedFile);
          long size = in.readLong(); //get the size
          for (int i=1; i<=size; i++) {
           try {
            fos.write(in.read());
           }
           catch (IOException e) {
            e.printStackTrace();
           }
          }

Я посылаю другой стороне размер файла, а затем отправляю каждый байт, непосредственно перед концом байтов он выдает вышеупомянутое исключение, говоря, что сброс concetion.

в чем может быть проблема?

Спасибо!

Ответы [ 2 ]

1 голос
/ 07 ноября 2010

Почему вы думаете, что эта строка возвращает количество байтов в потоке ??

long size = in.readLong(); //get the size

Вы должны сделать in.read(), пока не вернется -1.

0 голосов
/ 21 июня 2010

Я думаю, что цикл должен выглядеть примерно так:

 for (int i=0; i<size; i++)...

Поскольку потоки основаны на 0.

Кроме того, вы можете продолжать чтение до тех пор, пока не достигнете EOF, а не чтенияопределенное количество байтов.См. этот урок , чтобы узнать, как:)

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