Uploaded image for project: 'Commons Net'
  1. Commons Net
  2. NET-46

[FTP] retrieveFileStream fails randomly or hangs

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.4, 3.1
    • 3.2
    • FTP
    • None
    • Operating System: Windows XP
      Platform: PC

    Description

      For my application I need a way to get the InputStream of a binary file on a
      FTPServer. What I did was :

      // connect and get ftpFiles as an array
      // for each ftpFile ...

      InputStream is = ftp.retrieveFileStream(ftpFiles[i].getName());

      However, this behaves erratically : sometimes the inputstream is correct and
      sometimes it is null (and the ftpFile exists, no weird name or anything odd
      about it).

      After first blaming my FTPServer (I use GuildFTPd 0.9.9.13) I tried another
      FTPServer (Serv-U 6.1), but this also had the same behavior.

      Then I thought I might have to do with timing. So I tried Thread.sleep(xxx) on a
      couple of locations but to no avail. In a last attempt (was getting pretty
      desperate ) I rewrote my original line and replaced it by this :

      ByteArrayOutputStream out = new ByteArrayOutputStream();
      ftp.retrieveFile(ftpFiles[i].getName(),out);
      InputStream is = new ByteArrayInputStream(out.toByteArray());

      And much to my surprise, it worked like a charm. Tested it a couple of times (on
      both FTPServer products) and works perfectly.

      So I'm guessing something is going wrong in your retrieveFileStream
      implementation. Maybe something worth looking into ? (easiest fix : use the
      ByteArrayOut/InputStream swap ).

      kind regards,

      Dennis

      Attachments

        Activity

          People

            Unassigned Unassigned
            dennis.meerveld@ubench.com Dennis Meerveld
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: