1

Bluetooth経由でいくつかのファイルを送信する必要があるアプリを作成しています。クライアントはバイト配列を受け取り、それをファイルに構築する必要があります。しかし、配列からファイルにコピーされるのは数行だけです! サーバーからのすべてのメッセージが読み取られるスレッドからの私のコードは次のとおりです。

編集:コードを試して/キャッチしてください。

try {   
    FileOutputStream fos = new FileOutputStream("//mnt//sdcard//" + fileName);    
    fos.write(buffer);
    fos.close();
}
catch(FileNotFoundException e) {
    Log.d("FAIL", e.toString());
    }
catch (IOException e) {
    Log.d("FAIL", e.toString());
}

バッファはバイト[]です。私もトーストでチェックしました:すべてがバッファで問題ありません。ファイルのすべてのシンボルが含まれていますが、どうにかしてすべてを書き込むことはできません。

4

4 に答える 4

2

あなたのようにファイルパスをハードコードするべきではありません。

Android では、 Environment.getExternalStorageDirectory を使用する必要があります。

String fname = Environment.getExternalStorageDirectory() + "myfile.jpg";
File file = new File( fname );

ファイル パスに Environment.getExternalStorageDirectory を指定しない場合、アプリのインストール フォルダーに返されます。

あなたの場合、このファイルは「com.your.package/test.jpg」に書かれている可能性があります

于 2012-10-10T23:03:49.770 に答える
1

使用できる例は次のとおりです。

FileOutputStream outputStream = new FileOutputStream(new File(context.getCacheDir(), FILENAME), false);
OutputStream out = new BufferedOutputStream(outputStream);
byte[] loginBuffer = new byte[1024];
int byteRead = 0;
while((byteRead = in.read(loginBuffer)) != -1) {
    out.write(loginBuffer, 0, byteRead);
}
out.close();
于 2012-10-10T22:49:17.353 に答える
-1

最も可能性の高い原因は、アプリに書き込み権限がないことだと思います。

https://sites.google.com/site/androidhowto/how-to-1/save-file-to-sd-cardを参照してください

AndroidManifest.xmlに以下を追加する必要があります。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

注:FileNotFoundExceptionSDカードがコンピューターにマウントされているときに、SDカードでファイルを開いたり作成したりしようとすると、が表示されます。アプリケーションでアクセスする前に、まずマウントを解除する必要があります。

于 2012-10-12T12:51:48.873 に答える
-1

ファイルに書きたい量を伝えてみてください

fos.write(バッファ、0、x);

ここで、x はバッファーのサイズ (バイト単位) で、0 はオフセットです。

于 2012-10-10T22:43:41.367 に答える