code: private List<String> listFiles( final File dir, final String parentName )
      {
          final List<String> fileNames = new ArrayList<String>();
          File[] files = null;
          if( dir.canRead() )
          {
              files = dir.listFiles();
          }
          if( files != null )
          {
              for( File file : files )
              {
                  if( file.isDirectory() )
                  {
                      fileNames.addAll( listFiles( file, parentName + file.getName() + "/" ) );
                  }
                  else
                  {
                      fileNames.add( parentName + file.getName() );
                  }
              }
          }
          return fileNames;
      }
docs: Lists recursively files form a directory
  
  @param dir        the directory to list
  @param parentName name of the parent; to be used in construction the relative path of the returned files
  
  @return a list foi files from the dir and any sub-folders