gpt4 book ai didi

java - Android ftp 下载无法正确下载文件

转载 作者:行者123 更新时间:2023-12-01 14:32:08 25 4
gpt4 key购买 nike

我是 Android 编程新手。我需要从 ftp 服务器下载视频、jpg 和 pdf 到我的 Android 设备。

这是我在线程中的下载代码

      MyFTPClient ftpclient=null;
ftpclient = new MyFTPClient();
status = ftpclient.ftpConnect("xxx.xxx.xxx.xxx", "username", "password", 21);
if (status == true) {
Log.d(TAG, "Connection Success");
FTPFile[] filelist= ftpclient.ftpPrintFilesList("/httpdocs/");
for(int i=0;i<filelist.length;i++){
if(filelist[i].getType()==1)
{
File myFile = new File("/storage/sdcard0/App/"+filelist[i].getName());
if(!myFile.exists()){
File folder=new File("/storage/sdcard0/App/"+filelist[i].getName());
folder.mkdir();
}
}
else if(filelist[i].getType()==0)
{
ftpclient.ftpDownload("/httpdocs/"+filelist[i].getName(), "/storage/sdcard0/App/"+filelist[i].getName());
}
}
else {
Log.d(TAG, "Connection failed");
}

这是我的 FTP 客户端类

public boolean ftpConnect(String host, String username,
String password, int port)
{
try {
mFTPClient = new FTPClient();
mFTPClient.connect(host, port);
mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
boolean status = mFTPClient.login(username, password);

mFTPClient.setFileType(FTP.ASCII_FILE_TYPE);
mFTPClient.enterLocalPassiveMode();

return status;
}
} catch(Exception e) {
Log.d(TAG, "Error: could not connect to host " + host+"Cause: "+e.getCause() );
}
return false;
}


public FTPFile[] ftpPrintFilesList(String dir_path)
{
try {
FTPFile[] ftpFiles = mFTPClient.listFiles(dir_path);
int length = ftpFiles.length;

for (int i = 0; i < length; i++) {
String name = ftpFiles[i].getName();
boolean isFile = ftpFiles[i].isFile();

if (isFile) {
Log.i(TAG, "File : " + name);
}
else {
Log.i(TAG, "Directory : " + name);
}
}

return ftpFiles;
} catch(Exception e) {
e.printStackTrace();

return null;
}
}

public boolean ftpDownload(String srcFilePath, String desFilePath)
{
boolean status = false;
try {
FileOutputStream desFileStream = new FileOutputStream(desFilePath);;
status = mFTPClient.retrieveFile(srcFilePath, desFileStream);
desFileStream.flush();
desFileStream.close();

return status;
} catch (Exception e) {
Log.d(TAG, "download failed");
}

return status;
}

这些代码下载文件,但当我想打开一些 pdf 或视频时,出现错误“打开文档时发生错误”

如何处理下载代码才能正常工作?错误的原因是什么?

P.S:视频文件为100-200 MB,pdf文件为1-5 MB

最佳答案

为什么要在登录方法中设置这个? mFTPClient.setFileType(FTP.ASCII_FILE_TYPE);最后应该保留为二进制...

关于java - Android ftp 下载无法正确下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16787506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com