List of usage examples for org.apache.commons.net.ftp FTPFile getSize
public long getSize()
From source file:com.sos.VirtualFileSystem.FTP.SOSVfsFtp.java
/** * return the size of remote-file on the remote machine on success, otherwise -1 * @param remoteFile the file on remote machine * @return the size of remote-file on remote machine *//*from w ww.ja va 2s . c o m*/ @Override public long size(final String remoteFile) throws Exception { // Client().sendCommand("NOOP"); // LogReply(); // LogReply(); // LogReply(); if (listFiles != null && 1 == 0) { for (FTPFile objFile : listFiles) { if (objFile.getName().equalsIgnoreCase(remoteFile)) { return objFile.getSize(); } } return -1L; } else { Client().sendCommand("SIZE " + remoteFile); LogReply(); if (Client().getReplyCode() == FTPReply.CODE_213) return Long.parseLong(trimResponseCode(this.getReplyString())); else return -1L; // file not found or size not available } }
From source file:lucee.runtime.tag.Ftp.java
/** * List data of a ftp connection/*from ww w .j a v a 2s . com*/ * @return FTPCLient * @throws PageException * @throws IOException */ private FTPClient actionListDir() throws PageException, IOException { required("name", name); required("directory", directory); FTPClient client = getClient(); FTPFile[] files = client.listFiles(directory); if (files == null) files = new FTPFile[0]; String[] cols = new String[] { "attributes", "isdirectory", "lastmodified", "length", "mode", "name", "path", "url", "type", "raw" }; String[] types = new String[] { "VARCHAR", "BOOLEAN", "DATE", "DOUBLE", "VARCHAR", "VARCHAR", "VARCHAR", "VARCHAR", "VARCHAR", "VARCHAR" }; lucee.runtime.type.Query query = new QueryImpl(cols, types, 0, "query"); // translate directory path for display if (directory.length() == 0) directory = "/"; else if (directory.startsWith("./")) directory = directory.substring(1); else if (directory.charAt(0) != '/') directory = '/' + directory; if (directory.charAt(directory.length() - 1) != '/') directory = directory + '/'; pageContext.setVariable(name, query); int row = 0; for (int i = 0; i < files.length; i++) { FTPFile file = files[i]; if (file.getName().equals(".") || file.getName().equals("..")) continue; query.addRow(); row++; query.setAt("attributes", row, ""); query.setAt("isdirectory", row, Caster.toBoolean(file.isDirectory())); query.setAt("lastmodified", row, new DateTimeImpl(file.getTimestamp())); query.setAt("length", row, Caster.toDouble(file.getSize())); query.setAt("mode", row, FTPConstant.getPermissionASInteger(file)); query.setAt("type", row, FTPConstant.getTypeAsString(file.getType())); //query.setAt("permission",row,FTPConstant.getPermissionASInteger(file)); query.setAt("raw", row, file.getRawListing()); query.setAt("name", row, file.getName()); query.setAt("path", row, directory + file.getName()); query.setAt("url", row, "ftp://" + client.getRemoteAddress().getHostName() + "" + directory + file.getName()); } writeCfftp(client); return client; }
From source file:net.sf.jfilesync.plugins.net.items.TCommonsFTP_plugin.java
protected TFileProperties extractFileProperties(FTPFile file, FTPFile[] filesInDir) throws IOException { TFileProperties prop = new TFileProperties(); prop.setFileName(file.getName());//w ww . j a v a 2s .c o m final String cwd = ftpClient.printWorkingDirectory(); String fname = null; if (cwd.endsWith("/")) { fname = cwd + file.getName(); } else { fname = cwd + "/" + file.getName(); } prop.setAbsoluteFileName(fname); if (file.getName().startsWith(".")) { prop.setHiddenFlag(true); } // There is a little problem with ftp.getSize(), because it's sometimes // 0 prop.setFileSize(new BigInteger(Long.toString(file.getSize()))); // System.out.println(file.getName() + " , " + file.getTimestamp()); prop.setFileModTime(file.getTimestamp().getTimeInMillis()); // System.out.println("file: " + fname); // System.out.println("isDirectory: " + file.isDirectory()); prop.setDirectoryFlag(file.isDirectory()); prop.setLinkFlag(file.isSymbolicLink()); int permissions = 0; permissions |= file.isDirectory() ? FilePermissions.S_IFDIR : 0; permissions |= file.isSymbolicLink() ? FilePermissions.S_IFLNK : 0; permissions |= file.hasPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION) ? FilePermissions.S_IRUSR : 0; permissions |= file.hasPermission(FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION) ? FilePermissions.S_IWUSR : 0; permissions |= file.hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION) ? FilePermissions.S_IXUSR : 0; permissions |= file.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION) ? FilePermissions.S_IRGRP : 0; permissions |= file.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION) ? FilePermissions.S_IWGRP : 0; permissions |= file.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.EXECUTE_PERMISSION) ? FilePermissions.S_IXGRP : 0; permissions |= file.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION) ? FilePermissions.S_IROTH : 0; permissions |= file.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION) ? FilePermissions.S_IWOTH : 0; permissions |= file.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.EXECUTE_PERMISSION) ? FilePermissions.S_IXOTH : 0; final TFileAttributes attr = new TFileAttributes(); attr.setPermissions(permissions); prop.setAttributes(attr); /* * what needs to be done is implement caching of directories which have * to be listed for link detection implement recursive link detection * for links to links SaHu July 2006 */ /* * if( file.isSymbolicLink() ) { System.out.println("link target : " + * file.getLink()); } */ // if( file.isSymbolicLink() ) { // // check if link points to dir // final String linkTarget = file.getLink(); // final String linkTargetBaseName = // getPathControl().basename(linkTarget); // //System.out.println("link target basename: " + linkTargetBaseName); // if( linkTarget != null ) { // String linkContaingPath = // getPathControl().getPathLevelUp(linkTarget); // FTPFile[] targetFiles = null; // if( linkContaingPath.equals("") || linkContaingPath.equals(cwd) ) { // targetFiles = filesInDir; // } else { // //System.out.println("check dir : " + linkContaingPath); // targetFiles = ftpClient.listFiles(linkContaingPath); // } // // // if( targetFiles != null ) { // for(int i=0; i<targetFiles.length; i++) { // //System.out.println("> " + targetFiles[i].getName()); // if( targetFiles[i].getName().equals(linkTargetBaseName) ) { // if( targetFiles[i].isDirectory() ) { // prop.setDirectoryFlag(true); // } // break; // } // } // } // } // } if (file.isSymbolicLink()) { final String linkTarget = file.getLink(); boolean result = ftpClient.changeWorkingDirectory(linkTarget); if (result) { prop.setDirectoryFlag(true); } ftpClient.changeWorkingDirectory(cwd); } return prop; }
From source file:it.greenvulcano.util.remotefs.ftp.FTPManager.java
/** * @see it.greenvulcano.util.remotefs.RemoteManager#ls(String, String, date, * int, java.util.Map)/* w w w . j av a 2 s . co m*/ */ @Override public Set<FileProperties> ls(String remoteDirectory, String filenamePattern, Date modifiedSince, int fileTypeFilter, Map<String, String> optProperties) throws RemoteManagerException { checkConnected(); Set<FileProperties> resultsSet = new HashSet<FileProperties>(); try { changeWorkingDirectory(remoteDirectory); FTPFile[] results = ftpClient.listFiles(); int detectedFiles = (results != null ? results.length : 0); logger.debug(detectedFiles + " file entries DETECTED into current remote working directory"); if (results != null) { RegExFileFilter fileFilter = new RegExFileFilter(filenamePattern, fileTypeFilter, (modifiedSince != null) ? modifiedSince.getTime() : -1); for (FTPFile currFTPFile : results) { if (currFTPFile != null) { if (fileFilter.accept(currFTPFile)) { FileProperties currFile = new FileProperties(currFTPFile.getName(), currFTPFile.getTimestamp().getTimeInMillis(), currFTPFile.getSize(), currFTPFile.isDirectory(), currFTPFile.hasPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION), currFTPFile.hasPermission(FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION), currFTPFile.hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION)); resultsSet.add(currFile); } } else { logger.debug("Remote file entry NULL"); } } } return resultsSet; } catch (Exception exc) { throw new RemoteManagerException("FTP directory scan error", exc); } finally { if (isAutoconnect()) { disconnect(); } } }
From source file:GridFDock.DataDistribute.java
private void traverse(FTPFile[] fileList) throws IOException { String tempDir = null;//from w ww .j av a 2 s.co m for (FTPFile file : fileList) { if (file.getName().equals(".") || file.getName().equals("..")) { continue; } if (file.isDirectory()) { System.out.println("***************** Directory: " + file.getName() + " Start **************"); tempDir = ftpClient.printWorkingDirectory(); if (tempDir.matches("^((/\\w+))+$")) tempDir += "/" + file.getName(); else tempDir += file.getName(); ftpClient.changeWorkingDirectory(new String(tempDir.getBytes(CODING_1), CODING_2)); traverse(ftpClient.listFiles(tempDir)); // If is not a directory. System.out.println("***************** Directory:" + file.getName() + " End **************\n"); } else { System.out.println("FileName:" + file.getName() + " FileSize:" + file.getSize() / (1024) + "KB" + " CreateTime:" + file.getTimestamp().getTime()); } } ftpClient.changeToParentDirectory(); }
From source file:ch.cyberduck.core.ftp.parser.UnixFTPEntryParserTest.java
public void testUnknownTimestampFormat() { FTPFileEntryParser parser = new FTPParserSelector().getParser("UNIX"); FTPFile parsed; parsed = parser.parseFTPEntry(/*from w w w. j a v a2 s. c om*/ "-rw-rw-rw- 1 hoerspiel hoerspiel 3722053 19. Sep 13:24 Offenbarung 23 - Menschenopfer - 02.mp3"); assertNotNull(parsed); assertEquals(parsed.getName(), "Offenbarung 23 - Menschenopfer - 02.mp3"); parsed = parser.parseFTPEntry( "-rw-rw-rw- 1 hoerspiel hoerspiel 10128531 19. Sep 13:24 Offenbarung 23 - Menschenopfer - 01.mp3"); assertNotNull(parsed); assertEquals(parsed.getName(), "Offenbarung 23 - Menschenopfer - 01.mp3"); parsed = parser.parseFTPEntry( "-rw-rw-rw- 1 hoerspiel hoerspiel 11714687 19. Sep 13:25 Offenbarung 23 - Menschenopfer - 08.mp3"); assertNotNull(parsed); assertEquals(parsed.getName(), "Offenbarung 23 - Menschenopfer - 08.mp3"); parsed = parser.parseFTPEntry("-rw-r--r-- 1 www-data www-data 10089849 Dec 20 09:30 Stone Catalog"); assertNotNull(parsed); assertEquals(parsed.getName(), "Stone Catalog"); assertEquals(parsed.getUser(), "www-data"); assertEquals(parsed.getGroup(), "www-data"); assertEquals(parsed.getSize(), 10089849); parsed = parser.parseFTPEntry( "-rw-r--r-- 1 www-data www-data 34524204 Dec 20 13:41 Winter 2008 Newsletter.sit"); assertNotNull(parsed); assertEquals(parsed.getName(), "Winter 2008 Newsletter.sit"); assertEquals(parsed.getUser(), "www-data"); assertEquals(parsed.getGroup(), "www-data"); assertEquals(parsed.getSize(), 34524204); }
From source file:com.clickha.nifi.processors.util.FTPTransferV2.java
private FileInfo newFileInfo(final FTPFile file, String path) { if (file == null) { return null; }/*from www.ja v a 2 s.c o m*/ final File newFullPath = new File(path, file.getName()); final String newFullForwardPath = newFullPath.getPath().replace("\\", "/"); StringBuilder perms = new StringBuilder(); perms.append(file.hasPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION) ? "r" : "-"); perms.append(file.hasPermission(FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION) ? "w" : "-"); perms.append(file.hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION) ? "x" : "-"); perms.append(file.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION) ? "r" : "-"); perms.append(file.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION) ? "w" : "-"); perms.append(file.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.EXECUTE_PERMISSION) ? "x" : "-"); perms.append(file.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION) ? "r" : "-"); perms.append(file.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION) ? "w" : "-"); perms.append(file.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.EXECUTE_PERMISSION) ? "x" : "-"); FileInfo.Builder builder = new FileInfo.Builder().filename(file.getName()) .fullPathFileName(newFullForwardPath).directory(file.isDirectory()).size(file.getSize()) .lastModifiedTime(file.getTimestamp().getTimeInMillis()).permissions(perms.toString()) .owner(file.getUser()).group(file.getGroup()); return builder.build(); }
From source file:de.aw.awlib.fragments.AWRemoteFileChooser.java
@Override public void onBindViewHolder(AWLibViewHolder holder, FTPFile file, int position) { TextView tv;/*from w ww . ja va2 s. co m*/ switch (holder.getItemViewType()) { case BACKTOPARENT: for (int resID : viewResIDs) { View view = holder.itemView.findViewById(resID); if (resID == R.id.folderImage) { ImageView img = (ImageView) view; img.setImageResource(R.drawable.ic_open_folder); } else if (resID == R.id.awlib_fileName) { tv = (TextView) view; if (mDirectoyList.size() == 0) { tv.setText("."); } else { tv.setText(file.getName()); } } else if (resID == R.id.awlib_fileData) { view.setVisibility(View.GONE); } } break; default: for (int resID : viewResIDs) { View view = holder.itemView.findViewById(resID); if (resID == R.id.folderImage) { ImageView img = (ImageView) view; if (file.isDirectory()) { img.setImageResource(R.drawable.ic_closed_folder); } else { img.setImageResource(R.drawable.ic_file_generic); } } else if (resID == R.id.awlib_fileName) { tv = (TextView) view; tv.setText(file.getName()); } else if (resID == R.id.awlib_fileData) { view.setVisibility(View.VISIBLE); tv = (TextView) view; tv.setText(Formatter.formatFileSize(getContext(), file.getSize())); } } } }
From source file:ch.cyberduck.core.ftp.FTPPath.java
protected boolean parseListResponse(final AttributedList<Path> children, final FTPFileEntryParser parser, final List<String> replies) { if (null == replies) { // This is an empty directory return false; }/*from ww w.j a va 2 s .c o m*/ boolean success = false; for (String line : replies) { final FTPFile f = parser.parseFTPEntry(line); if (null == f) { continue; } final String name = f.getName(); if (!success) { // Workaround for #2410. STAT only returns ls of directory itself // Workaround for #2434. STAT of symbolic link directory only lists the directory itself. if (this.getAbsolute().equals(name)) { log.warn(String.format("Skip %s", f.getName())); continue; } if (name.contains(String.valueOf(DELIMITER))) { if (!name.startsWith(this.getAbsolute() + Path.DELIMITER)) { // Workaround for #2434. log.warn("Skip listing entry with delimiter:" + name); continue; } } } success = true; if (name.equals(".") || name.equals("..")) { if (log.isDebugEnabled()) { log.debug(String.format("Skip %s", f.getName())); } continue; } final Path parsed = new FTPPath(this.getSession(), this.getAbsolute(), StringUtils.removeStart(name, this.getAbsolute() + Path.DELIMITER), f.getType() == FTPFile.DIRECTORY_TYPE ? DIRECTORY_TYPE : FILE_TYPE); parsed.setParent(this); switch (f.getType()) { case FTPFile.SYMBOLIC_LINK_TYPE: parsed.setSymlinkTarget(f.getLink()); parsed.attributes().setType(SYMBOLIC_LINK_TYPE | FILE_TYPE); break; } if (parsed.attributes().isFile()) { parsed.attributes().setSize(f.getSize()); } parsed.attributes().setOwner(f.getUser()); parsed.attributes().setGroup(f.getGroup()); if (this.getSession().isPermissionSupported(parser)) { parsed.attributes() .setPermission( new Permission(new boolean[][] { { f.hasPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION), f.hasPermission(FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION), f.hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION) }, { f.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION), f.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION), f.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.EXECUTE_PERMISSION) }, { f.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION), f.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION), f.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.EXECUTE_PERMISSION) } })); } final Calendar timestamp = f.getTimestamp(); if (timestamp != null) { parsed.attributes().setModificationDate(timestamp.getTimeInMillis()); } children.add(parsed); } return success; }
From source file:ch.cyberduck.core.ftp.FTPListResponseReader.java
@Override public AttributedList<Path> read(final Path directory, final List<String> replies, final ListProgressListener listener) throws IOException, FTPInvalidListException, ConnectionCanceledException { final AttributedList<Path> children = new AttributedList<Path>(); // At least one entry successfully parsed boolean success = false; // Call hook for those implementors which need to perform some action upon the list after it has been created // from the server stream, but before any clients see the list parser.preParse(replies);/*from ww w .j a v a2s . c o m*/ for (String line : replies) { final FTPFile f = parser.parseFTPEntry(line); if (null == f) { continue; } final String name = f.getName(); if (!success) { if (lenient) { // Workaround for #2410. STAT only returns ls of directory itself // Workaround for #2434. STAT of symbolic link directory only lists the directory itself. if (directory.getName().equals(name)) { log.warn(String.format("Skip %s matching parent directory name", f.getName())); continue; } if (name.contains(String.valueOf(Path.DELIMITER))) { if (!name.startsWith(directory.getAbsolute() + Path.DELIMITER)) { // Workaround for #2434. log.warn(String.format("Skip %s with delimiter in name", name)); continue; } } } } success = true; if (name.equals(".") || name.equals("..")) { if (log.isDebugEnabled()) { log.debug(String.format("Skip %s", f.getName())); } continue; } final Path parsed = new Path(directory, PathNormalizer.name(name), f.getType() == FTPFile.DIRECTORY_TYPE ? EnumSet.of(Path.Type.directory) : EnumSet.of(Path.Type.file)); switch (f.getType()) { case FTPFile.SYMBOLIC_LINK_TYPE: parsed.setType(EnumSet.of(Path.Type.file, Path.Type.symboliclink)); // Symbolic link target may be an absolute or relative path final String target = f.getLink(); if (StringUtils.isBlank(target)) { log.warn(String.format("Missing symbolic link target for %s", parsed)); final EnumSet<AbstractPath.Type> type = parsed.getType(); type.remove(AbstractPath.Type.symboliclink); } else if (StringUtils.startsWith(target, String.valueOf(Path.DELIMITER))) { parsed.setSymlinkTarget(new Path(target, EnumSet.of(Path.Type.file))); } else if (StringUtils.equals("..", target)) { parsed.setSymlinkTarget(directory); } else if (StringUtils.equals(".", target)) { parsed.setSymlinkTarget(parsed); } else { parsed.setSymlinkTarget(new Path(directory, target, EnumSet.of(Path.Type.file))); } break; } if (parsed.isFile()) { parsed.attributes().setSize(f.getSize()); } parsed.attributes().setOwner(f.getUser()); parsed.attributes().setGroup(f.getGroup()); Permission.Action u = Permission.Action.none; if (f.hasPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION)) { u = u.or(Permission.Action.read); } if (f.hasPermission(FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION)) { u = u.or(Permission.Action.write); } if (f.hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION)) { u = u.or(Permission.Action.execute); } Permission.Action g = Permission.Action.none; if (f.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION)) { g = g.or(Permission.Action.read); } if (f.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION)) { g = g.or(Permission.Action.write); } if (f.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.EXECUTE_PERMISSION)) { g = g.or(Permission.Action.execute); } Permission.Action o = Permission.Action.none; if (f.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION)) { o = o.or(Permission.Action.read); } if (f.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION)) { o = o.or(Permission.Action.write); } if (f.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.EXECUTE_PERMISSION)) { o = o.or(Permission.Action.execute); } final Permission permission = new Permission(u, g, o); if (f instanceof FTPExtendedFile) { permission.setSetuid(((FTPExtendedFile) f).isSetuid()); permission.setSetgid(((FTPExtendedFile) f).isSetgid()); permission.setSticky(((FTPExtendedFile) f).isSticky()); } parsed.attributes().setPermission(permission); final Calendar timestamp = f.getTimestamp(); if (timestamp != null) { parsed.attributes().setModificationDate(timestamp.getTimeInMillis()); } children.add(parsed); } if (!success) { throw new FTPInvalidListException(children); } return children; }