2017-10-24 6 views
0

こんにちは今、私のアプリで私のサーバーにあるファイルを自分の携帯電話にダウンロードしようとしています。私は自分のストレージに書き込もうとしていますが、私のSDカードに書き込もうとしていません! 新しいフォルダを作成する際にエラーが発生しました

私はマニフェストに私のデバイス上で必要な権限を持っている:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 

これは、新しいフォルダを作成するにはDownloaderClassからの私のコードがあります。私は戻り値を取得するダウンロード完了...デバッガでは、それは私がそれを望む場所に保存しているパスを表示していますが、私がそこに見える場合....フォルダが空いているはずのフォルダです。

 //File new_Folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "MY DOWNLOADED FILES"); 
     String intStorageDirectory = context.getFilesDir().toString(); 
     File new_Folder = new File(intStorageDirectory, "MY DOWNLOADED FILES"); 
     if (!new_Folder.exists()) { 
      if (!new_Folder.mkdir()) { 
       return "ERROR: mkdirs() failed for directory" + new_Folder.getAbsolutePath(); 
      } 

     } else { 
      Log.i("Info:", "Folder already exists"); 
     } 

     /** 
     * Create an output file to store the file for download 
     */ 

     inputoutput_file = new File(new_Folder, "downloaded_files.jpg"); 


     InputStream inputStream = new BufferedInputStream(url.openStream(), 8192); 
     //this will read the information in 1 KB 
     byte[] data = new byte[1024]; 
     int total = 0; 
     int count; 

     OutputStream outputStream = new FileOutputStream(inputoutput_file); 

     while ((count = inputStream.read(data))!= -1){ 
      total+=count; 

      if (file_length>0) { 
       int progress = total * 100/file_length; 
       publishProgress(progress); 
       outputStream.write(data, 0, count); 
       Log.i("Info:", "Progress: " + Integer.toString(progress)); 
      } 
     } 

     inputStream.close(); 
     outputStream.close(); 

     return "Download Complete..."; 

    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
     return "ERROR MalformedURLException" + e.getMessage(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return "ERROR IOException" + e.getMessage(); 
    } 

} 

答えて

0

はちょうど

"/sdcard/insertyourpreferredfoldername/" 

にフォルダのパスを変更し、それが内部のフォルダを作成します。

downloaded_file.jpg 

あなたがサーバーから取得したファイル名に変数を付けて保存すると、ファイルが別に保存されます。

編集:greenappsありがとう 正しい方法を導いてくれています!

+0

@greenappsありがとう! –

0

アプリの[設定]に移動し、[許可]を[オン]に切り替えます。解決しよう

+0

どういうわけかプログラムで行うことはできますか?許可トグルトでもまだ動作しません –

+0

stil mkdirs()がそのディレクトリを作成できないと言っていますか? – greenapps

+0

正確には何も起こりません。デバッガに表示されているパスは存在しないフォルダに与えられます。 –

関連する問題