Is there an efficient way to check the existence of a file on a FTP server? I'm using Apache Commons Net. I know that I can use the listNames
method of FTPClient
to get all the files in a specific directory and then I can go over this list to check if a given file exists, but I don't think it's efficient especially when the server contains a lot of files.
相关问题
- Delete Messages from a Topic in Apache Kafka
- Jackson Deserialization not calling deserialize on
- How to maintain order of key-value in DataFrame sa
- StackExchange API - Deserialize Date in JSON Respo
- Difference between Types.INTEGER and Types.NULL in
listFiles(String pathName)
should work just fine for a single file.The accepted answer did not work for me.
Code did not work:
Instead, this works for me:
Using a full path to a file in
listFiles
(ormlistDir
) call, as the accepted answer shows, should indeed work:The RFC 959 in the section 4.1.3 in the part about the
LIST
command says:Though if you are going to check for many files, this will be rather ineffective. A use of the
LIST
command actually involves several commands, waiting for their responses, and mainly, opening a data connection. Opening a new TCP/IP connection is a costly operation, even more so, when an encryption is used (what is a must these days).Also
LIST
command is even more ineffective for testing an existence of a folder, as it results in a transfer of a complete folder contents.More efficient is to use
mlistFile
(MLST
command), if the server supports it:This method can be used to test an existence of a directory.
MLST
command does not use a separate connection (contrary toLIST
).If the server does not support
MLST
command, you can abusegetModificationTime
(MDTM
command):This method cannot be used to test an existence of a directory.