List of usage examples for org.apache.commons.net.ftp FTPClient allocate
public boolean allocate(int bytes) throws IOException
From source file:net.paissad.jcamstream.utils.FTPUtils.java
/** * Stores a file on the server using the given name and taking input from * the given InputStream./*from w w w. j av a2s .co m*/ * <p> * <b>Note</b>: The InputStream is not closed ! Feel free or responsible to * close it (or not) after use. * </p> * * @param remoteFileName * - The name that will be given to the file onto the FTP server. * @param in * - The stream to upload the FTP server. * @throws IOException * @throws FTPException */ public void uploadStream(String remoteFileName, InputStream in) throws IOException, FTPException { FTPClient client = this.getFtpClient(); String errMsg; int filesize = in.available(); client.allocate(filesize); String humanFileSize = CommonUtils.humanReadableByteCount(filesize, false); errMsg = "Unable to allocate the amount of size " + humanFileSize + " for the file " + remoteFileName; this.verifyReplyCode(errMsg); client.storeFile(remoteFileName, in); errMsg = "Unable to store the file " + remoteFileName + " to the server"; this.verifyReplyCode(errMsg); }
From source file:org.apache.hadoop.fs.ftp.FTPFileSystem.java
@Override public FSDataInputStream open(Path file, int bufferSize) throws IOException { FTPClient client = connect(); Path workDir = new Path(client.printWorkingDirectory()); Path absolute = makeAbsolute(workDir, file); FileStatus fileStat = getFileStatus(client, absolute); if (fileStat.isDir()) { disconnect(client);/*from ww w . j a v a2s .c o m*/ throw new IOException("Path " + file + " is a directory."); } client.allocate(bufferSize); Path parent = absolute.getParent(); // Change to parent directory on the // server. Only then can we read the // file // on the server by opening up an InputStream. As a side effect the working // directory on the server is changed to the parent directory of the file. // The FTP client connection is closed when close() is called on the // FSDataInputStream. client.changeWorkingDirectory(parent.toUri().getPath()); InputStream is = client.retrieveFileStream(file.getName()); FSDataInputStream fis = new FSDataInputStream(new FTPInputStream(is, client, statistics)); if (!FTPReply.isPositivePreliminary(client.getReplyCode())) { // The ftpClient is an inconsistent state. Must close the stream // which in turn will logout and disconnect from FTP server fis.close(); throw new IOException("Unable to open file: " + file + ", Aborting"); } return fis; }
From source file:org.apache.hadoop.fs.ftp.FTPFileSystem.java
/** * A stream obtained via this call must be closed before using other APIs of * this class or else the invocation will block. *///w w w .j av a2 s .c om @Override public FSDataOutputStream create(Path file, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress) throws IOException { final FTPClient client = connect(); Path workDir = new Path(client.printWorkingDirectory()); Path absolute = makeAbsolute(workDir, file); if (exists(client, file)) { if (overwrite) { delete(client, file); } else { disconnect(client); throw new IOException("File already exists: " + file); } } Path parent = absolute.getParent(); if (parent == null || !mkdirs(client, parent, FsPermission.getDefault())) { parent = (parent == null) ? new Path("/") : parent; disconnect(client); throw new IOException("create(): Mkdirs failed to create: " + parent); } client.allocate(bufferSize); // Change to parent directory on the server. Only then can we write to the // file on the server by opening up an OutputStream. As a side effect the // working directory on the server is changed to the parent directory of the // file. The FTP client connection is closed when close() is called on the // FSDataOutputStream. client.changeWorkingDirectory(parent.toUri().getPath()); FSDataOutputStream fos = new FSDataOutputStream(client.storeFileStream(file.getName()), statistics) { @Override public void close() throws IOException { super.close(); if (!client.isConnected()) { throw new FTPException("Client not connected"); } boolean cmdCompleted = client.completePendingCommand(); disconnect(client); if (!cmdCompleted) { throw new FTPException("Could not complete transfer, Reply Code - " + client.getReplyCode()); } } }; if (!FTPReply.isPositivePreliminary(client.getReplyCode())) { // The ftpClient is an inconsistent state. Must close the stream // which in turn will logout and disconnect from FTP server fos.close(); throw new IOException("Unable to create file: " + file + ", Aborting"); } return fos; }