site :
  home page

about FinJ :
  online API
  what's next ?

miscellaneous :
  JUnit testing

resources :
  LGPL license


finj - FTP Client for Java Apps

[ L A S T   U P D A T E   :   2015-07-22 ]

What is finj ?

Sun provides a FTP client written in Java as part of the standard classes. Unfortunately, since the* classes are not part of the java.* packages, neither the source code nor a complete API are available.

The goal of this project is to provide to developers a complete, *well designed*, programmatically controllable Open-Source FTP client written in the Java language. finj then simply stands for 'FTP in Java'.

Here, we are talking about the low level client : the one that opens the connections to the FTP server and actually talks the protocol fluently :) According to the RFC 959, this means implementing the User-PI and the User-DTP (see Figure 1 and links for details)... doesn't represent too much work !

Future development could include "on the fly" encryption, compression, ... depending on developers requirements and ideas.

Those classes could easily become the heart of final user FTP client front ends (eg. GUI or Cli based), but this is NOT the aim of this very project which, more generally targets any network oriented standalone application, and even applet, that needs to rely on FTP, eg. a distributed application could use it to upload data and download calculated results to and from a file server.

This software is distributed under the GNU LGPL license. A copy of this file can be found in the downloadable libraries. Mainly, this licensing scheme states that even if the software package (typically libraries) IS GPLed, it can be used by non-GPLed software. You can browse for more information on the LGPL on the Free Software Foundation (FSF).

RFC959 full text finj project API (online version) What means 'Server-FTP process' ? What means 'Server-PI' ? What means 'Server-DTP' ? What means 'File System' ? What means 'Ftp Command' ? What means 'Ftp Reply' ? What means 'Data Connection' ? What means 'User-FTP Process' ? What means 'User-PI' ? What means 'User-DTP' ? What means 'Java Application' ? What means 'File System' ? What means 'User' ?

Figure 1 : Diagram for an FTP service (click on words for details)

Click on a word to get more details


New and notable

[ All news can be found in the news repository ]

> 2009-07-15 : Release 1.1.5

Dear Finjes,

  • Recently fixed :
    • method org.finj.FTClient.getFileDescriptors(String) :
      bug with command result parsing.


        -- javier

> 2006-11-13 : maven and subversion

Dear Finjes,

Please note that from now on, the finj source code is directly available from the SourceForge subversion servers:

The project is now managed / compiled / tested / packaged /... under Apache Maven 2

  • Recently implemented :
    • method org.finj.FTPClient.getFileDescriptors() :
      Initial implementation based on a contribution of Hector Mauricio Gonzalez.


        -- javier

> 2000-10-19 : IMPORTANT NOTE

Hi all,

First of all : many thanks to people that sent comments/requests and downloaded draft versions of API... it's good to know that this project has some echo out there :)

Then : sorry to be that late on releases. Really. But now I'm afraid to admit that


ok. I wrote it. I'm running out of time... so I released today (2000-11-24) the first very, very draft version of the java source code I was working on. It's pretty ugly, with lot of debugging stuff everywhere.

Have a look at :
-> project-o-meter
to see what's already implemented/works.

Now, send your feedback !! are you still interested in this project ? if it's the case, you're welcome. There's not too much work to do, but I can't find enough time in a straight to work well enough on it.

I hope we'll find a solution, all together !

        -- javier

forged on     written with     tested using
SourceForge Logo   JUnit logo   JUnit logo

project admin