【发布时间】:2018-04-28 20:41:10
【问题描述】:
我需要一些类似于 FTP 上的 bash touch-command 的 Java 方式——使用 org.apache.commons.net.ftp.FTPClient(或其他库)在 FTP 服务器上创建一个空文件。
【问题讨论】:
标签: java ftp apache-commons-net
我需要一些类似于 FTP 上的 bash touch-command 的 Java 方式——使用 org.apache.commons.net.ftp.FTPClient(或其他库)在 FTP 服务器上创建一个空文件。
【问题讨论】:
标签: java ftp apache-commons-net
这是我在我的一个 FTP 实用程序中编写的一种方法,用于创建名称为 - zeroByteFileName 并在 FTP 目录 - remoteDirectory 的零字节文件,
public boolean createZeroByteFile(String remoteDirectory, String zeroByteFileName) {
FTPClient ftpClient = null;
try (InputStream targetStream = new ByteArrayInputStream("".getBytes())) {
ftpClient = login(remoteDirectory);
ftpClient.storeFile(remoteDirectory + "/" + zeroByteFileName, targetStream);
return true;
} catch (IOException e) {
logger.error("Failed to create zero byte file - {} thru FTP (IOException) for directory - {} .",
zeroByteFileName, remoteDirectory);
logger.error(e.getMessage(), e);
return false;
} finally {
logOut(ftpClient);
}
}
我假设您为您的 FTP 服务定义了一个 logger(并且是 org.slf4j.Logger 的一个实例)以及该服务中的登录和注销方法。
此外,就我的测试而言,此方法将用新文件替换具有相同名称的现有文件,并根据最新尝试更新上次修改时间。
【讨论】:
上传一个空的“内存文件”,像这样:
InputStream bin = ByteArrayInputStream(new byte[0]);
ftpClient.storeFile("/remote/path/emptyfile", bin);
【讨论】: