14

私は次のようにAndroidプログラムを介してファイルを作成しました。

String file = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Files/hello.txt";
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(str + "\n");     \\ Yeah, 'str' has a value there
writer.close();

プログラムはその役割を果たし、終了します。次に、Androidの[戻る]ボタンを押して、アプリケーションを閉じます。次にAndroidファイルブラウザ(Astroなど)にアクセスするとファイルは表示されますが、WindowsにSDカードをマウントするとファイルが表示されません。

これで、[設定] → [アプリケーション] → [アプリケーションの管理] → [強制停止] <アプリケーション>に移動すると、Windowsでもファイルを表示できます。

AndroidアプリでSDカードにファイルが書き込まれていて、毎回設定に移動して強制終了したくない場合に、Windowsでファイルを表示できるようにするにはどうすればよいですか。

実際にはファイルは正しく書き込まれていますが(私は思う)、Androidの「戻る」ボタンのデフォルトの動作ではアプリが強制終了されないため、アプリが強制終了されない限り、Androidの外部でファイルを開くことはできません( Android、私はまだそれを見ることができ、それを開くことさえできます)。

それで、この場合の最良の解決策は何でしょうか?アプリが閉じているときにアプリを自動的に強制終了する必要がありますか?System.exit()は厳密には推奨されないと言われています。

4

3 に答える 3

26

アーカイブが Windows のファイル システムまたは電話のギャラリーに表示されるようにするには、次のコードを使用する必要があります。

次の 2 つの可能性があります。

  1. Android は渡されたファイルのみを更新するため、高速です。

    MediaScannerConnection.scanFile(this, new String[]{"your path here</"}, null, null);

  2. Android は渡されたパス内のすべてのファイルを検索するため、コストが高くなります。ファイルの検索を減らすために、フォルダーのパスのみを渡すことができます。

    context.sendBroadcast(
        new Intent(Intent.ACTION_MEDIA_MOUNTED, 
                   Uri.parse("file://" + "path of the folder")));
    
于 2012-09-26T21:31:38.783 に答える
0

BufferedWriterオブジェクトはバッファーであるため、コンテンツを出力ストリームに強制的に書き込むには、バッファーをflush()する必要があります。

String file = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Files/hello.txt";
BufferedWriter writer = new BufferedWriter(new FileWriter(file));   
writer.write(str+"\n");
writer.flush(); // force the buffer to actually dump its data to the stream
writer.close();

バッファを使用して.write()を実行する場合は、バッファがいっぱいになるまで(その後、自動的にflush()されるまで)、または.flush(を使用してバッファにデータを強制的にフラッシュするまで)データがバッファに保持されることを常に覚えておいてください。 )バッファのメソッド。

さらに、アプリケーションを強制終了するまでファイルが正しく書き込まれなかった理由は、アプリケーションを強制終了するときに、実行される手順の1つが、アプリケーションに関連付けられているすべてのバッファーをflush()することであるためです。だから、これはあなたがそれを強制的に殺したときにだけ起こっていたのです。

注:これは、多くの異なる言語でのほとんどの種類のバッファリングされたストリームのデフォルトの動作であることに注意してください。

于 2012-09-26T21:14:59.693 に答える
0

Windows 7 では、USB 接続を介して接続したときにファイルを表示する際に問題がありました。私にとっての回避策は、GNU/Linux ディストリビューションを使用することでした。

root:root端末アプリを使用すると、ファイルはエクスプローラーで表示できるが、他の所有者は表示できないという違いがあります。

于 2015-04-05T18:42:26.237 に答える