Java Code Examples for org.apache.commons.net.ftp.FTPClient#storeFileStream()
The following examples show how to use
org.apache.commons.net.ftp.FTPClient#storeFileStream() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: FtpFileSystem.java From xenon with Apache License 2.0 | 6 votes |
@Override public OutputStream writeToFile(Path path, long size) throws XenonException { LOGGER.debug("writeToFile path = {} size = {}", path, size); assertIsOpen(); Path absPath = toAbsolutePath(path); assertPathNotExists(absPath); assertParentDirectoryExists(absPath); // Since FTP connections can only do a single thing a time, we need a // new FTPClient to handle the stream. FTPClient newClient = adaptor.connect(getLocation(), credential); newClient.enterLocalPassiveMode(); try { newClient.setFileType(FTPClient.BINARY_FILE_TYPE); OutputStream out = newClient.storeFileStream(absPath.toString()); checkClientReply(newClient, "Failed to write to path: " + absPath.toString()); return new TransferClientOutputStream(out, new CloseableClient(newClient)); } catch (IOException e) { throw new XenonException(ADAPTOR_NAME, "Failed to write to path: " + absPath); } }
Example 2
Source File: FTPOperationHandler.java From CloverETL-Engine with GNU Lesser General Public License v2.1 | 5 votes |
@Override public WritableByteChannel write() throws IOException { FTPClient ftp = null; try { ftp = connect(uri); Info info = info(uri, ftp); if ((info != null) && info.isDirectory()) { throw new IOException(MessageFormat.format(FileOperationMessages.getString("IOperationHandler.exists_not_file"), uri)); //$NON-NLS-1$ } OutputStream os = ftp.storeFileStream(getPath(uri)); if (os == null) { throw new IOException(ftp.getReplyString()); } int replyCode = ftp.getReplyCode(); if (!FTPReply.isPositiveIntermediate(replyCode) && !FTPReply.isPositivePreliminary(replyCode)) { os.close(); throw new IOException(ftp.getReplyString()); } return Channels.newChannel(new FTPOutputStream(os, ftp)); } catch (Throwable t) { disconnect(ftp); if (t instanceof IOException) { throw (IOException) t; } else { throw new IOException(t); } } }
Example 3
Source File: FTPFileSystem.java From hadoop with Apache License 2.0 | 4 votes |
/** * A stream obtained via this call must be closed before using other APIs of * this class or else the invocation will block. */ @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); FileStatus status; try { status = getFileStatus(client, file); } catch (FileNotFoundException fnfe) { status = null; } if (status != null) { if (overwrite && !status.isDirectory()) { delete(client, file, false); } else { disconnect(client); throw new FileAlreadyExistsException("File already exists: " + file); } } Path parent = absolute.getParent(); if (parent == null || !mkdirs(client, parent, FsPermission.getDirDefault())) { 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; }
Example 4
Source File: FTPFileSystem.java From big-c with Apache License 2.0 | 4 votes |
/** * A stream obtained via this call must be closed before using other APIs of * this class or else the invocation will block. */ @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); FileStatus status; try { status = getFileStatus(client, file); } catch (FileNotFoundException fnfe) { status = null; } if (status != null) { if (overwrite && !status.isDirectory()) { delete(client, file, false); } else { disconnect(client); throw new FileAlreadyExistsException("File already exists: " + file); } } Path parent = absolute.getParent(); if (parent == null || !mkdirs(client, parent, FsPermission.getDirDefault())) { 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; }
Example 5
Source File: FTPFileSystem.java From RDFS with Apache License 2.0 | 4 votes |
/** * A stream obtained via this call must be closed before using other APIs of * this class or else the invocation will block. */ @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; }
Example 6
Source File: FtpCheck.java From commons-vfs with Apache License 2.0 | 4 votes |
public static void main(final String[] args) throws Exception { if (args.length < 3) { throw new IllegalArgumentException("Usage: FtpCheck user pass host dir"); } final String user = args[0]; final String pass = args[1]; final String host = args[2]; String dir = null; if (args.length == 4) { dir = args[3]; } final FTPClient client = new FTPClient(); client.connect(host); final int reply = client.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { throw new IllegalArgumentException("cant connect: " + reply); } if (!client.login(user, pass)) { throw new IllegalArgumentException("login failed"); } client.enterLocalPassiveMode(); final OutputStream os = client.storeFileStream(dir + "/test.txt"); if (os == null) { throw new IllegalStateException(client.getReplyString()); } os.write("test".getBytes(Charset.defaultCharset())); os.close(); client.completePendingCommand(); if (dir != null && !client.changeWorkingDirectory(dir)) { throw new IllegalArgumentException("change dir to '" + dir + "' failed"); } System.err.println("System: " + client.getSystemType()); final FTPFile[] files = client.listFiles(); for (int i = 0; i < files.length; i++) { final FTPFile file = files[i]; if (file == null) { System.err.println("#" + i + ": " + null); } else { System.err.println("#" + i + ": " + file.getRawListing()); System.err.println("#" + i + ": " + file.toString()); System.err.println("\t name:" + file.getName() + " type:" + file.getType()); } } client.disconnect(); }
Example 7
Source File: FTPFileSystem.java From hadoop-gpu with Apache License 2.0 | 4 votes |
/** * A stream obtained via this call must be closed before using other APIs of * this class or else the invocation will block. */ @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; }