1

機能の開発を開始する前に質問したい未解決の質問がありますが、後で主題についてさらに学び、最初からやり直すだけです;)検索を試みましたが、何を検索すればよいかわかりません。そのため、ここであなたの頭脳を少し選びたいと思います...

現在の状況は次のとおり です。アクティビティ/イベントログを保存するアプリがあります。簡単な例:「Aさんがグラスに100mlの水を入れた」

これは、単一のテーブルにレコードとして保存されます。

ここで、新機能の要件について: USB経由で外部ストレージデバイスをタブレットに接続します。このストレージデバイスには、いくつかのテキストファイルがあります。各ファイルには、上記と同様のアクティビティ/イベントのパラメータが含まれていますが、データが異なります。

これらのファイルをインポートし、それらのコンテンツの一部を新しいレコードとしてデータベースに読み込んでから、ファイルへのリンクをDBのフィールドとしてタブレットのどこかに保存する関数を作成したいと思います。理想的には、テキストファイル全体の内容をフィールドに保存するか、関連する1:1テーブルのフィールドに保存したかったのですが、これらのファイルは1MBにもなる可能性があります(1MBは非常にまれですが、可能です。平均は約100KB)。

だから、私の質問は次のとおりです。

  • USB経由でリンクされた外部ストレージデバイスからAndroidデバイスのSDカード/内部メモリにファイルをコピーすることは可能ですか?(タブレットのファイルエクスプローラーアプリを使用して、このストレージデバイスにアクセスできます)
  • もしそうなら、これについて行くための最良の方法は何ですか?
  • そうでない場合、私の選択肢は何ですか?
  • また、ファイルをコピーしてローカルに保存できない場合でも、外部ストレージのコンテンツにアクセスすることはできますか?その場合、必要なデータをインポートするだけで、元のファイルのコピーは保存しません。

よろしくお願いします、すべての返信は大歓迎です!

4

1 に答える 1

0

誰もチャンスを逃したくないですか?:)

同じ問題を抱えている将来の読者のために:USB接続されたデバイスからファイルを読み取ることが可能です。たとえば、ファイルシステムからファイルを直接読み取ることは、メールの添付ファイルとして読み取ることとは異なることに注意してください。しかし、別の道に過ぎません;)

最終的にファイルをDBに読み込み、レコード全体で行を分割しました。つまり、ファイル全体(または完全な行)をフィールドに追加するのではなく、ファイルを1つのレコードに解析し、さまざまなフィールドに分割します。

私が出くわした2つのことはあなたを助けるかもしれません。ファイルの読み取りはかなり高速ですが、これらの行を1つずつデータベースに書き込んで間違いを犯さないでください。それらすべてをトランザクションに追加し、一度にコミットすることをお勧めします。もう1つは、デフォルトの入力ストリームの代わりに、読み取りバッファーを使用してファイルを読み取ることができます。これにより、大きなファイルの読み取りも高速化されます。

于 2012-11-24T11:07:11.357 に答える