2013-05-23 2 views
1

AsyncTask를 사용하여 폴더의 일부 파일을 다른 폴더로 복사 한 다음 나열하려고합니다. 그러나, CopyandList 내 애플 리케이션을 실행하면 강제로 닫습니다. 어떤 조언을 주시면 감사하겠습니다.AsyncTask 파일 복사

여기 여기, 그때

new CopyandList().execute();

사과와 주요 활동을 실행 내 AsyncTask를 코드

private class CopyandList extends AsyncTask<Void, Void, Void> { 

    private ProgressDialog dialog; 

    @Override 
    protected void onPreExecute() { 
     dialog.setMessage("Copying Files ..."); 
     dialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     File file; 
     file = new File(Snapdes); 
     File list[] = file.listFiles(); 

     for(int i=0; i< list.length; i++) 
     { 
      String x=(directory + list[i].getName()); 
      String y=(Snapdes); 
      if(list[i].equals(y)){ 
      }else{ 
       RootTools.copyFile(x, y, false, true); 
      } 

     } 
     return null; 
    } 

    protected void onPostExecute(Void result) { 
     if (dialog.isShowing()) { 
      dialog.dismiss(); 

      File file; 
      file = new File(Snapdes); 
      File list[] = file.listFiles(); 
      ListView ListView = (ListView) findViewById(R.id.SnapList); 
      List<String> SnapList; 
      SnapList = new ArrayList<String>(); 

      for(int i=0; i< list.length; i++){ 

       SnapList.add(list[i].getName()); 
       System.out.print(list[i]); 

      } 

      ArrayAdapter<String> adapter = 
       new ArrayAdapter<String> (MainActivity.this, 
         android.R.layout.simple_list_item_1, 
         android.R.id.text1, SnapList); 
      ListView.setAdapter(adapter); 
     } 
    } 
} 

내 로그 캣입니다.

05-23 21:26:56.145: D/AndroidRuntime(24915): Shutting down VM 
05-23 21:26:56.145: W/dalvikvm(24915): threadid=1: thread exiting with uncaught exception (group=0x41770930) 
05-23 21:26:56.165: E/AndroidRuntime(24915): FATAL EXCEPTION: main 
05-23 21:26:56.165: E/AndroidRuntime(24915): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.itsallwhite.sneakysnapper/com.itsallwhite.sneakysnapper.MainActivity}: java.lang.NullPointerException 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2357) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.app.ActivityThread.access$600(ActivityThread.java:153) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.os.Looper.loop(Looper.java:137) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.app.ActivityThread.main(ActivityThread.java:5226) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at java.lang.reflect.Method.invokeNative(Native Method) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at java.lang.reflect.Method.invoke(Method.java:511) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at com.android.internal.os.ZygoteInit.main(Native Method) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at dalvik.system.NativeStart.main(Native Method) 
05-23 21:26:56.165: E/AndroidRuntime(24915): Caused by: java.lang.NullPointerException 
05-23 21:26:56.165: E/AndroidRuntime(24915): at com.itsallwhite.sneakysnapper.MainActivity$CopyandList.onPreExecute(MainActivity.java:119) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.os.AsyncTask.execute(AsyncTask.java:534) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at com.itsallwhite.sneakysnapper.MainActivity.onCreate(MainActivity.java:66) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.app.Activity.performCreate(Activity.java:5104) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
05-23 21:26:56.165: E/AndroidRuntime(24915): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261) 
05-23 21:26:56.165: E/AndroidRuntime(24915): ... 12 more 
+1

LogCat은 무엇이라고 말합니까? – CaseyB

+0

'스냅 '이란 무엇입니까? 또한 파일을 복사하기 위해 일부 루트 메소드를 사용하려고 시도하는 것처럼 보이지만, 테스트중인 디바이스에는 루트 액세스 권한이 있습니까? 그렇게하지 않으면 강제로 닫을 수 있습니다. – FoamyGuy

+0

'대화 상자 '는 어디에서 초기화 되었습니까? 또한, 스택 추적 정말 도움이 될 것입니다. –

답변

0

LogCat 메시지를 보지 않고도이 문제를 쉽게 추측 할 수 있습니다. 그럼에도 불구하고 당신은

private void FileMoving(String inputFile, String outputFile) { 
    InputStream in = null; 
    OutputStream out = null; 
    try { 
     in = new FileInputStream(inputFile); 
     out = new FileOutputStream(outputFile); 
     byte[] buffer = new byte[1024]; 
     int read; 
     while ((read = in.read(buffer)) != -1) { 
      out.write(buffer, 0, read); 
     } 
     in.close(); 
     in = null; 

     // write the output file (You have now copied the file) 
     out.flush(); 
     out.close(); 
     out = null; 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

편집을 initalizing없이 그것은 당신이 onPreExecute() 당신이 ProgressDialog를 사용하고있는 것 같습니다 로그 캣 를 추가 한 후 파일을 복사하는이 코드를 시도 할 수 있습니다. 당신이 dialog.setMessage("Copying Files ...");를 호출 할 때 따라서 그

@Override 
    protected void onPreExecute() { 
     progress = ProgressDialog.show(Activity_Main.this, "Copying", 
       "Please Wait.. ", true); 

    } 
+0

죄송합니다. logcat을 추가했습니다. – user2415188

+0

@ user2415188 답변을 다시 한 번 확인해 주시고 이에 따라 변경하십시오. – MDMalik

2

에 대한 로그 캣

코드의 Null 값은 당신은 NullPointerException을 얻고있다. 먼저 dialog을 초기화해야합니다.