Example usage for org.apache.commons.net.ftp FTPFile getSize

List of usage examples for org.apache.commons.net.ftp FTPFile getSize

Introduction

In this page you can find the example usage for org.apache.commons.net.ftp FTPFile getSize.

Prototype

public long getSize() 

Source Link

Document

Return the file size in bytes.

Usage

From source file:org.paxle.crawler.ftp.impl.FtpUrlConnection.java

private static void formatStdDirlisting(final OutputStream into, final FTPListParseEngine fileParseEngine) {
    final Formatter writer = new Formatter(into);
    FTPFile[] files;/*from   ww  w .j a va2  s  . c  o  m*/
    while (fileParseEngine.hasNext()) {
        files = fileParseEngine.getNext(16);
        for (final FTPFile file : files) {
            if (file == null)
                continue;

            // directory
            char c;
            switch (file.getType()) {
            case FTPFile.DIRECTORY_TYPE:
                c = 'd';
                break;
            case FTPFile.SYMBOLIC_LINK_TYPE:
                c = 's';
                break;
            default:
                c = '-';
                break;
            }
            writer.format("%c", Character.valueOf(c));

            // permissions
            for (final int access : FILE_ACCESS_MODES) {
                writer.format("%c%c%c",
                        Character.valueOf(file.hasPermission(access, FTPFile.READ_PERMISSION) ? 'r' : '-'),
                        Character.valueOf(file.hasPermission(access, FTPFile.WRITE_PERMISSION) ? 'w' : '-'),
                        Character.valueOf(file.hasPermission(access, FTPFile.EXECUTE_PERMISSION) ? 'x' : '-'));
            }

            // other information
            writer.format("  %2d", Integer.valueOf(file.getHardLinkCount()));
            writer.format("  %8s", file.getUser());
            writer.format("  %8s", file.getGroup());
            writer.format("  %12d", Long.valueOf(file.getSize()));
            writer.format("  %1$tY-%1$tm-%1$td %1$tH:%1$tM",
                    Long.valueOf(file.getTimestamp().getTimeInMillis()));
            writer.format("  %s", file.getName());

            writer.format("%s", System.getProperty("line.separator"));
        }
    }

    writer.flush();
}

From source file:org.paxle.crawler.ftp.impl.FtpUrlConnection.java

@Override
public int getContentLength() {
    if (!this.client.isConnected() || this.isDirectory)
        return -1;

    int size = -1;
    try {/*from w  ww. ja va 2s . c  om*/
        FTPFile file = this.findFile();
        if (file != null) {
            size = (int) file.getSize();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return size;
}

From source file:org.punksearch.crawler.adapters.FtpAdapterTest.java

public void testGetSize() {
    FTPFile file = getSomeFile();
    assertEquals(file.getSize(), adapter.getSize(new FtpItem(file, null)));
}

From source file:org.ramadda.repository.type.FtpTypeHandler.java

/**
 * _more_/*from  ww  w  .jav a 2 s  .c  om*/
 *
 * @param request _more_
 * @param parentEntry _more_
 * @param id _more_
 *
 * @return _more_
 *
 * @throws Exception _more_
 */
public Entry makeSynthEntry(Request request, Entry parentEntry, String id) throws Exception {
    Object[] values = parentEntry.getValues();
    if (values == null) {
        return null;
    }
    String baseDir = (String) values[COL_BASEDIR];
    String server = (String) values[COL_SERVER];
    MyFTPFile myFtpFile = getFileFromId(parentEntry, id, baseDir);
    if (myFtpFile == null) {
        return null;
    }
    if (myFtpFile.path.equals(baseDir)) {
        return parentEntry;
    }
    FTPFile ftpFile = myFtpFile.ftpFile;
    TypeHandler handler = (ftpFile.isDirectory() ? getRepository().getTypeHandler(TypeHandler.TYPE_GROUP)
            : getRepository().getTypeHandler(TypeHandler.TYPE_FILE));
    handler = this;
    String synthId = Repository.ID_PREFIX_SYNTH + parentEntry.getId() + ":" + id;

    boolean isDir = ftpFile.isDirectory();
    Entry entry = (isDir ? (Entry) new Entry(synthId, handler, true) : new Entry(synthId, handler));

    String name = IOUtil.getFileTail(ftpFile.getName());
    entry.setIsLocalFile(true);
    Entry parent;
    if (myFtpFile.path.equals(baseDir)) {
        parent = (Entry) parentEntry;
    } else {
        File tmp = new File(myFtpFile.path);
        String parentPath = tmp.getParent().replace("\\", "/");
        String parentId = getSynthId(parentEntry, baseDir, parentPath);
        if (parentPath.equals(baseDir)) {
            parent = (Entry) parentEntry;
        } else {
            parent = (Entry) getEntryManager().getEntry(request, parentId, false, false);
        }
    }

    double maxSize = 0;
    if (values[COL_MAXSIZE] != null) {
        maxSize = ((Double) values[COL_MAXSIZE]).doubleValue();
    }

    long dttm = ftpFile.getTimestamp().getTime().getTime();
    /*
      String datePattern = (String)values[COL_DATE_PATTERN];
      //TODO cache the compiled patterns
      if(datePattern!=null && datePattern.length()>0)  {
      Pattern p = Pattern.compile(datePattern);
      Matcher m = p.matcher(path);
      if(m.matches()) {
          String dateString = m.group(1);
          String dateFormat = (String)values[COL_DATE_FORMAT];
          Date date=null;
          if(dateFormat!=null && dateFormat.length()==0) {
               date = new SimpleDateFormat(dateFormat).parse(dateString);
            
          } else {
               date = DateUtil.parse(dateString);
          }
          dttm  = date.getTime();
      }
      }
     */
    Resource resource;
    if (isDir) {
        resource = new Resource("ftp://" + server + myFtpFile.path, Resource.TYPE_URL);
    } else {
        if (ftpFile.getSize() > 1000000 * maxSize) {
            resource = new Resource("ftp://" + server + myFtpFile.path, Resource.TYPE_URL);
        } else {
            resource = new Resource(name, Resource.TYPE_REMOTE_FILE);

        }
        resource.setFileSize(ftpFile.getSize());
    }
    entry.initEntry(name, "", parent, getUserManager().getLocalFileUser(), resource, "", dttm, dttm, dttm, dttm,
            null);

    return entry;
}

From source file:org.runmyprocess.sec.FTP.java

private void listFiles(JSONObject jsonObject) throws Exception {
    // get all files from server and store them in an array of
    // FTPFiles/*from  w w  w.jav  a 2s .c om*/
    JSONArray fileInfo = new JSONArray();
    LOG.log("LIST directories: " + jsonObject.getString("path"), Level.INFO);
    String[] directories = this.client.listNames(jsonObject.getString("path"));
    LOG.log("LIST files: " + jsonObject.getString("path"), Level.INFO);
    FTPFile[] files = this.client.listFiles(jsonObject.getString("path"));
    LOG.log("LIST DONE", Level.INFO);

    for (FTPFile file : files) {
        if (file.getType() == FTPFile.FILE_TYPE) {
            JSONObject fileObject = new JSONObject();
            fileObject.put("Name", file.getName());
            fileObject.put("Size", FileUtils.byteCountToDisplaySize(file.getSize()));
            fileObject.put("Timestamp", file.getTimestamp().getTime().toString());
            fileInfo.add(fileObject);
        }
    }
    response.setStatus(200);//sets the return status to 200
    JSONObject resp = new JSONObject();
    resp.put("files", fileInfo);//sends the info inside an object
    resp.put("directories", directories);
    response.setData(resp);
}

From source file:org.teiid.resource.adapter.ftp.FtpFileSystem.java

@Override
public long getSize(VirtualFile mountPoint, VirtualFile target) {
    try {/* w w  w  . j  ava 2s  . c o m*/
        FTPFile file = this.client.mlistFile(target.getName());
        return file != null ? file.getSize() : -1;
    } catch (IOException e) {
        throw new FtpOperationException(e);
    }
}

From source file:org.ut.biolab.medsavant.shared.util.SeekableFTPStream.java

@Override
public long length() {
    if (length == 0) {
        FTPFile[] files;// w  ww  .j a  v a  2s  .  c  o m
        try {
            files = listFiles(fileName);
        } catch (IOException e) {
            try {
                disconnect();
                files = listFiles(fileName);
            } catch (IOException e1) {
                LOG.warn("Unable to reconnect getting length");
                return 0;
            }

        }
        for (int i = 0; i < files.length; i++) {
            FTPFile file = files[i];
            if (file != null) {
                if (file.getName().equals(fileName)) {
                    length = file.getSize();
                    break;
                }
            }
        }
    }
    return length;

}

From source file:pt.lsts.neptus.util.logdownload.LogsDownloaderWorkerActions.java

/**
 * Process the serversLogPresenceList and gets the actual log files/folder for each base log folder. This is done by
 * iterating the {@link LogsDownloaderWorker#getServersList()} depending on its presence.
 * /*from  w  w w .ja  v  a 2  s .  c o m*/
 * @param serversLogPresenceList Map for each base log folder and servers presence as values (space separated list
 *            of servers keys)
 * @return
 */
private LinkedList<LogFolderInfo> getFromServersCompleteLogList(
        LinkedHashMap<String, String> serversLogPresenceList) {
    if (serversLogPresenceList.size() == 0)
        return new LinkedList<LogFolderInfo>();

    long timeF0 = System.currentTimeMillis();

    LinkedList<LogFolderInfo> tmpLogFolders = new LinkedList<LogFolderInfo>();

    try {
        ArrayList<String> servers = worker.getServersList();
        for (String serverKey : servers) { // Let's iterate by servers first
            if (stopLogListProcessing)
                break;

            if (!worker.isServerAvailable(serverKey))
                continue;

            FtpDownloader ftpServer = null;
            try {
                ftpServer = LogsDownloaderWorkerUtil.getOrRenewFtpDownloader(serverKey,
                        worker.getFtpDownloaders(), worker.getHostFor(serverKey), worker.getPortFor(serverKey));
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (ftpServer == null)
                continue;

            // String host = worker.getHostFor(serverKey); // To fill the log files host info
            String host = serverKey; // Using a key instead of host directly

            for (String logDir : serversLogPresenceList.keySet()) { // For the server go through the folders
                if (stopLogListProcessing)
                    break;

                if (!serversLogPresenceList.get(logDir).contains(serverKey))
                    continue;

                // This is needed to avoid problems with non English languages
                String isoStr = new String(logDir.getBytes(), "ISO-8859-1");

                LogFolderInfo lFolder = null;
                for (LogFolderInfo lfi : tmpLogFolders) {
                    if (lfi.getName().equals(logDir)) {
                        lFolder = lfi;
                        break;
                    }
                }
                if (lFolder == null)
                    lFolder = new LogFolderInfo(logDir);

                if (!ftpServer.isConnected())
                    ftpServer.renewClient();

                try {
                    FTPFile[] files = ftpServer.getClient().listFiles("/" + isoStr + "/");
                    for (FTPFile file : files) {
                        if (stopLogListProcessing)
                            break;

                        String name = logDir + "/" + file.getName();
                        String uriPartial = logDir + "/" + file.getName();
                        LogFileInfo logFileTmp = new LogFileInfo(name);
                        logFileTmp.setUriPartial(uriPartial);
                        logFileTmp.setSize(file.getSize());
                        logFileTmp.setFile(file);
                        logFileTmp.setHost(host);

                        // Let us see if its a directory
                        if (file.isDirectory()) {
                            logFileTmp.setSize(-1); // Set size to -1 if directory
                            long allSize = 0;

                            // Here there are no directories, considering only 2 folder layers only, e.g. "Photos/00000"
                            LinkedHashMap<String, FTPFile> dirListing = ftpServer
                                    .listDirectory(logFileTmp.getName());
                            ArrayList<LogFileInfo> directoryContents = new ArrayList<>();
                            for (String fName : dirListing.keySet()) {
                                if (stopLogListProcessing)
                                    break;

                                FTPFile fFile = dirListing.get(fName);
                                String fURIPartial = fName;
                                LogFileInfo fLogFileTmp = new LogFileInfo(fName);
                                fLogFileTmp.setUriPartial(fURIPartial);
                                fLogFileTmp.setSize(fFile.getSize());
                                fLogFileTmp.setFile(fFile);
                                fLogFileTmp.setHost(host);

                                allSize += fLogFileTmp.getSize();
                                directoryContents.add(fLogFileTmp);
                            }
                            logFileTmp.setDirectoryContents(directoryContents);
                            logFileTmp.setSize(allSize);
                        }
                        lFolder.addFile(logFileTmp);
                        tmpLogFolders.add(lFolder);
                    }
                } catch (Exception e) {
                    System.err.println(isoStr);
                    e.printStackTrace();
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    NeptusLog.pub().warn(".......Contacting remote systems for complete log file list "
            + (System.currentTimeMillis() - timeF0) + "ms");

    return tmpLogFolders;
}

From source file:ro.kuberam.libs.java.ftclient.FTP.FTP.java

private static void _generateResourceElement(XMLStreamWriter xmlWriter, FTPFile resource, InputStream is,
        String resourceAbsolutePath) throws IOException, Exception {

    String resourceName = resource.getName();
    String resourceType = ((resource.getType() == 1) ? "directory"
            : (((resource.getType() == 0) ? "file" : "link")));
    Calendar resourceTimeStamp = resource.getTimestamp();
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
    String lastModified = formatter.format(resourceTimeStamp.getTimeInMillis());
    lastModified = lastModified.replace(" ", "T");
    lastModified = lastModified.substring(0, 22) + ":" + lastModified.substring(22, 24);
    long resourceSize = resource.getSize();
    String user = resource.getUser();
    String userGroup = resource.getGroup();
    String permissions = resource.getRawListing().substring(0, 10);
    String linkTo = resource.getLink();

    GenerateResourceElement.run(is, xmlWriter, modulePrefix, moduleNsUri, resourceName, resourceType,
            resourceAbsolutePath, lastModified, resourceSize, user, userGroup, permissions, linkTo);
}

From source file:savant.agp.HTTPBrowser.java

/**
 * Get a nicely formatted string describing the file's size.
 * //  w w  w  .  ja va2 s  . co  m
 * @param f the FTP entry whose size we're displaying
 * @return a string describing the size, or null if f is a directory
 */
private static String getSizeString(FTPFile f) {
    if (f != null && f.isFile()) {
        long size = f.getSize();
        if (size < 1E6) {
            return String.format("%.2f kB", size / 1.0E3);
        } else if (size < 1E9) {
            return String.format("%.2f MB", size / 1.0E6);
        } else {
            return String.format("%.2f GB", size / 1.0E9);
        }
    }
    return null;
}