// For complete examples and data files, please go to https://github.com/groupdocs-viewer/GroupDocs.Viewer-for-Java
public class FTPInputDataHandler implements IInputDataHandler {
private final String _server = "ftp://localhost";
private final String _userName = "anonymous";
private final String _userPassword = "";
@Override
public FileDescription getFileDescription(String guid) {
return new FileDescription(guid);
}
@Override
public InputStream getFile(String guid) {
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
try {
FTPClient ftpClient = new FTPClient();
ftpClient.connect(_server);
ftpClient.login(_userName, _userPassword);
ftpClient.retrieveFile(guid, arrayOutputStream);
ftpClient.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return new ByteArrayInputStream(arrayOutputStream.toByteArray());
}
@Override
public Date getLastModificationDate(String guid) {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(_server);
ftpClient.login(_userName, _userPassword);
FTPFile[] files = ftpClient.listFiles(guid);
if (files.length > 0) {
final FTPFile ftpFile = files[0];
FileDescription fileDescription = new FileDescription(ftpFile.getName(), ftpFile.getName(), ftpFile.isDirectory());
return fileDescription.getLastModificationDate();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
public List<FileDescription> loadFileTree(FileTreeOptions fileTreeOptions) {
List<FileDescription> fileDescriptions = new ArrayList<FileDescription>();
try {
FTPClient ftpClient = new FTPClient();
ftpClient.connect(_server);
ftpClient.login(_userName, _userPassword);
FTPFile[] files = ftpClient.listFiles();
for (FTPFile ftpFile : files) {
FileDescription fileDescription = new FileDescription(ftpFile.getName(), ftpFile.getName(), ftpFile.isDirectory());
fileDescriptions.add(fileDescription);
}
ftpClient.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return fileDescriptions;
}
}