2012-02-13 18 views
2

私が知っているコードは、別のプロジェクトで働いていて、新しいフォルダを作成していない場合は作成し、そこからプロジェクトにファイルを置きます。しかし、私の新しいプロジェクトではコードは何もしません。何が間違っているのですか?新しいディレクトリを作成してAndroidでファイルを開く

File directory = new File(Environment.getExternalStorageDirectory() 
       + File.separator + "testing"); 
      directory.mkdirs(); 

     File directory2 = new File(Environment.getExternalStorageDirectory() 
       + File.separator + "CandooData" + File.separator + "Meds"); 
     if (!(directory2.isDirectory())) { 
      directory2.mkdirs(); 
     } 
     File directory3 = new File(Environment.getExternalStorageDirectory() 
       + File.separator + "CandooData" + File.separator + "Meds"); 
     String[] files; 
     if (directory3.isDirectory()) { 
      files = directory3.list(); 
      if (files.length == 0) { 
       // directory is empty 
       CopyAssets("medsxml", "/Meds"); 
      } 
     } 

答えて

1

私は、ログを見てきたし、何のエラーか何かがない

File folder = new File(Environment.getExternalStorageDirectory()+"/Trip"); 
     if(!folder.exists()){ 
      folder.mkdir(); 
     } 
      File newxmlfile = new File(Environment.getExternalStorageDirectory()+"/Trip/"+ RecordID +".xml"); 
      try{ 
       newxmlfile.createNewFile(); 
      }catch(IOException e){ 

      } 
1

directory.mkdir();このの代わりにディレクトリ.mkdirs();

+0

まだ何の変化について簡単に例ではありません:( – Peter

2
  1. logcat経由でログを参照してください。

  2. あなたはWRITE_EXTERNAL_STORAGE権限を忘れている可能性があります。

  3. mkdirs()はmkdir()より悪くなくてもうまく動作します。

+0

、私はその権限を持っていないと私は両方を試してみました。私は思いましたたぶん私は場所が間違っていたが、私は何度もそれを変えようとしたが、何も変わっていなかった。私は変わっているように感じる。 – Peter

0

私はこの下の方法を使ってディレクトリを作成し、そこにファイルを保存します。

private static File APP_FILE_PATH = new File("/sdcard/SpeechTutor"); 

p_file_Side_Slow = new File("/sdcard/SpeechTutor/P_SideMovieSlow.mp4"); 
     p_file_Side_Medium = new File("/sdcard/SpeechTutor/P_SideMovieMedium.mp4"); 
     p_file_Side_Fast = new File("/sdcard/SpeechTutor/P_SideMovieFast.mp4"); 

     p_file_Front_Slow = new File("/sdcard/SpeechTutor/P_FrontMovieSlow.mp4"); 
     p_file_Front_Medium = new File("/sdcard/SpeechTutor/P_FrontMovieMedium.mp4"); 
     p_file_Front_Fast = new File("/sdcard/SpeechTutor/P_FrontMovieFast.mp4"); 

if((!(p_file_Side_Slow.exists())) || (!(p_file_Side_Medium.exists())) || (!(p_file_Side_Fast.exists())) 
       || (!(p_file_Front_Slow.exists()))|| (!(p_file_Front_Medium.exists()))||(!(p_file_Front_Fast.exists()))){ 
      ArrayList<String> files = new ArrayList<String>(); 
      files.add("P_SideMovieSlow.mp4"); 
      files.add("P_SideMovieMedium.mp4"); 
      files.add("P_SideMovieFast.mp4"); 

      files.add("P_FrontMovieSlow.mp4"); 
      files.add("P_FrontMovieMedium.mp4"); 
      files.add("P_FrontMovieFast.mp4"); 
      new myAsyncTask().execute(files); 
     } 



// AsyncTass for the Progress Dialog and to do Background Process 
    private class myAsyncTask extends AsyncTask<ArrayList<String>, Void, Void> {   
     ArrayList<String> files;   
     ProgressDialog dialog;   
     @Override   
     protected void onPreExecute() {    
      dialog = ProgressDialog.show(MainScreenActivity.this, "Speech Tutor", "Loading...");   
     }   
     @Override   
     protected Void doInBackground(ArrayList<String>... params) {    
      files = params[0];    
      for (int i = 0; i < files.size(); i++) {     
       copyFileFromAssetsToSDCard(files.get(i));     
      }    return null;   
     }   
     @Override   
     protected void onPostExecute(Void result) {    
      dialog.dismiss(); 
//   myVideoThumbnail.setImageBitmap((Bitmap)ThumbnailUtils.createVideoThumbnail(p_file_Side_Slow.getAbsolutePath(),MediaStore.Video.Thumbnails.MINI_KIND)); 
//   myVideoView.setVideoURI(p_uri_Side_Medium); 
      setVideoURI(sideShow, frontshow, slowShow, mediumShow, fastShow); 
     }  
    } 


// Function to copy file from Assets to the SDCard 
    public void copyFileFromAssetsToSDCard(String fileFromAssets){ 
     AssetManager is = this.getAssets(); 
     InputStream fis; 
     try { 
      fis = is.open(fileFromAssets); 
      FileOutputStream fos; 
      if (!APP_FILE_PATH.exists()) { 
       APP_FILE_PATH.mkdirs(); 
      } 
      fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory()+"/SpeechTutor",fileFromAssets)); 
      byte[] b = new byte[8]; 
      int i; 
      while ((i = fis.read(b)) != -1) { 
       fos.write(b, 0, i); 
      } 
      fos.flush(); 
      fos.close(); 
      fis.close(); 
     } 
     catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
    } 

すべて上記のコードは、ファイルをバックグラウンドプロセスとして保存します。以下は

関連する問題