2012-01-11 29 views
2

現在、メディアファイルを内部/外部ストレージ(プライマリストレージ)に書き込む方法を考えています。保存するファイルは、数MBから50MBの任意のサイズにすることができます。私は自分のDroid X 2.3.3 Razr 2.3.5で動作するロジックを持っていますが、私のGalaxy Nexusでは動作しません(リムーバブルストレージはありませんが、v4.0.2の16Gigカードが組み込まれています)。私は周りを見回し、v4.0で動作するコード/サンプルが見つかりませんでした。たぶん私は実際のSDカードを持っていないので、このすべての間違って近づいている?おそらくv4.0の新機能ですか?私はギャラクシーネクサス上で自分のアプリケーションを実行すると現在、私はこれを取得:をSystem.err(19520):java.io.FileNotFoundException:内部/外部ストレージにメディアファイルを書き込む

まず、それを変換しない

InputStream inputStream = urlConnection.getInputStream(); 
File PATH = Environment.getExternalStorageDirectory(); 
File FILE = new File(Environment.getExternalStorageDirectory()+ "/" + FILENAME); 
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); 
// buffer int bufferSize = 1024; int bufferLength = 0; byte[] buffer = new byte[bufferSize]; 
while ((bufferLength = inputStream.read(buffer)) != -1) { 
byteBuffer.write(buffer, 0, bufferLength); 
} 
byte[] temp = byteBuffer.toByteArray(); 
FileOutputStream fos = new FileOutputStream(FILE); 
fos.write(temp); 
fos.close(); 

答えて

1

あなたはこのファイルをsdcardの特定のディレクトリに配置していますか?外部ストレージですか?

「権限が拒否されていません」という理由でマニフェストの権限が良好であると想定しています。ファイルにmkdirs()関数を呼び出す必要があります。

+0

PATHの値は/ mnt/sdcard 私は自分のディレクトリを作ってファイルを書きますか?私はそれが私がストレージの一番上の部分に書き込むことを望んでいないと思いますか? –

+0

うーん、それは単なる質問だった。あなたがそうなら、 ファイルmyFile =新しいファイル(Environment.getExternalStorageDirectory()+ '/' + nameFile)は動作しませんか? –

+0

いいえ、私の元の投稿を見ていると、私は現在作業中のコードを見ることができます。私はあなたが言ったことを追加し、まだ働いていない。同じ場所で同じ例外があります。私はログファイルへのパスを印刷し、右に見えます。 –

1

を更新しました文字列は、ちょうどFileとしてgetExternalStorageDirectory()を使用します。それはそれを修正したりしません場合

File sd = Environment.getExternalStorageDirectory(); 
File file = new File(sd, FILENAME); 

私は知りませんが、それはそれを試して損はありません。そしてFileOutputStreamでファイルに書き込む前にfile.createNewFile()に電話する必要はありません。 FileOutputStreamについてのドキュメントは、次のように述べています。

バイトをファイルに書き出す出力ストリーム。出力ファイル が存在する場合は、そのファイルを置換または追加することができます。存在しない場合は、新しい ファイルが作成されます。

そして、どのコード行がFileNotFoundExceptionで起こっていますか?

+0

これは私が今持っているものです: –

+0

InputStream inputStream = urlConnection.getInputStream(); \t \t \t \tファイルPATH = Environment.getExternalStorageDirectory(); \t \tファイルFILE =新しいファイル(PATH、FILENAME); \t \t \t \t ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); \t \t \t \t //バッファ \t \t int型がbufferSize = 1024; \t \t int bufferLength = 0; \t \t byte [] buffer =新しいバイト[bufferSize]; \t \t \t \t一方((BufferLengthに= inputStream.read(バッファ))= -1!){ \t \t byteBuffer.write(バッファ、0、BufferLengthに)。 \t \t} \t \t \t \tバイト[] TEMP =のByteBuffer。toByteArray(); \t \t \t \t FileOutputStream fos = new FileOutputStream(FILE); \t \t fos.write(temp); \t \t fos.close(); –

+0

この行で例外がスローされます。 InputStream inputStream = urlConnection.getInputStream(); –

関連する問題