ホームネットワークを構築中です。 ネットワークストレージ。 外部ストレージへのアクセス - Android オペレーティング システム用のゲーム開発 ディスク構成の選択

写真カメラやビデオ カメラのメガピクセルが増加するにつれて、多くの PC ユーザーにとってホーム メディア コンテンツを保存するという問題がますます生じています。 もちろん、今日のハードドライブはそれほど高価ではなく、その容量はテラバイト単位で測定されますが、これでは十分ではありません。

利用可能なディスク領域の容量を拡張するには、いくつかのオプションがあります。 通常の「大型」コンピュータをお持ちの場合、最も簡単な方法は、新しいハードドライブをそれに取り付けることです。 より汎用的な方法は、外付けドライブを使用することです。 ただし、最も便利な (そして高価な) のは、ネットワーク ドライブをホーム ローカル ネットワークにインストールすることです。

これにより、任意の PC またはプレーヤーからメディア ライブラリ全体に常時アクセスしたり、ドキュメントやコンピュータのシステム パーティションのバックアップ コピーを保存したり、PC を介さずにインターネット経由でファイルを交換したりすることが可能になります。 さらに、これらのデバイスは、(PC と比較して) サイズが小さく、消費電力とノイズが低いという特徴があります。 したがって、ユーティリティ ルームが 2 つあるコテージがない場合は、コンパクトなネットワーク ドライブが非常に良い選択肢になる可能性があります。 ちなみに2.5インチHDD対応モデルもあります。

ネットワークにはすでにルーターが含まれているため、目的の NAS モデルを選択してネットワークに接続するだけです。 数十テラバイトの必要性がよくわからない初心者ユーザーの場合は、1 つまたは 2 つのハード ドライブがインストールされているデバイスを検討するのが最善です。 現在では家庭での使用に最適です。 十分なスペースがない場合は、外部 USB または eSATA ドライブを接続できます。 数枚のディスクでは明らかに不十分であることが事前にわかっている場合は、4、5、6 枚以上のディスクを搭載したモデルもあります。 確かに、そのコストは比較的高いです。 ほとんどのデバイスはハードドライブなしで販売されているため、別途購入する必要があります。 参考までに、メーカーの互換性リストを参照することをお勧めします。 この場合、最速のハードドライブを追い求めても意味がありません。 エネルギー消費、発熱、騒音の低レベルに基づいて選択することをお勧めします。

別の専用の通常の PC を NAS として使用できる可能性にも言及する価値があります。 ただし、この資料では、特に既製のネットワーク ドライブについて説明します。

FastEthernet が提供する 10 ~ 12 MB/s はすでに最も単純なモデルの能力の範囲内にあり、今日ではまったく軽薄に見えるため、ほとんどすべてのデバイスがギガビット接続を介してネットワークに接続されています。

通常、組み込みオペレーティング システムとして Linux が使用されますが、Windows Home Server を使用するオプションもあります。 2 番目のケースでは、サーバーは実際には家庭用 PC と何ら変わりはなく、サーバーとの通信のみがネットワーク経由で排他的に行われます。 WHS には高品質のドキュメントと多数の「ヘルパー」が備えられているため、それを理解するのは難しくありません。 この記事で後述する情報のほとんどは、このオプションには当てはまりません。

Linux との通信が心配な場合でも、実際にはこの場合は何も複雑なことはありません。ユーザーは便利な Web インターフェイスにアクセスして、必要なすべてのパラメータと機能を設定できます。 ただし、コマンド ラインにアクセスすると、通常のコンピューターとほぼ同じようにデバイスを操作できます。

オペレーティング システムに加えて、デバイスの機能にも注意を払うことは理にかなっています。 現在、ネットワーク ドライブは、通常のファイル ストレージに加えて、メディア サーバー サービス、ファイルのダウンロード、リモート アクセスなどを提供します。

ハードウェア プラットフォームとパフォーマンスに関しては、x86 互換プロセッサのモデルが最も生産性の高い (そして高価な) セグメントに属し、周波数 1000 ~ 1600 MHz の ARM プロセッサが中心で、通常はローエンドの ARM がそのラインに属します。 実際には、ソフトウェア シェルを最適化することで多くのことを達成できるため、プラットフォーム自体ではなく、その特定の実装の結果に注目する価値があります。

追加サービスの効率は RAM の量に依存するため、ネットワーク ファイル アクセス以外の使用を計画している場合は、256 MB 以上のデバイスを選択することをお勧めします。 ただし、最初の知り合いの場合は、64 MB または 128 MB で十分です。 ただ、彼らにあまり期待しないでください。

今回は、この市場セグメントで最も人気のあるメーカーの 1 つである Synolog の DS210+ モデルを使用します。 この 2 ディスク デバイスは、ネットワーク ファイル ストレージ サービスの提供に加えて、多くの追加機能を備えており、家庭用とオフィスの両方で非常に役立ちます。

通常、すべてのメーカーは、ライン内のすべてのモデルに対してほぼ同じファームウェア機能を備えており、同時に更新されることに注意してください。 Synology デバイスの詳細については、DS710+ の最近のレビューをご覧ください。

組み立て

ほとんどの場合、ネットワーク ドライブはハード ドライブなしで販売されており、ユーザーが自分で購入してインストールする必要があります。 ここでは複雑なことは何もありません。ケースを開けるか、フレームを取り出し、ディスクを所定の位置にねじ込み、構造を組み立てます。

ここでの唯一の注意点は、最初にハード ドライブに情報がないこと、およびパーティション テーブルが空であることを確認することをお勧めします。 そうしないと、ファームウェアのインストール時にエラーが発生する可能性があります。 また、ネットワーク ドライブのすべてのモデルでは必ず内部ドライブの再フォーマットが必要であり、既存のドライブをインストールしてデータを保存するだけでは機能しないことを忘れないでください。

ファームウェアのインストール

通常、この後、NAS にファームウェアをインストールするプロセスを実行する必要があります。 これは、バンドルされたユーティリティ (この場合は Synology Assistant) を使用して行われます。 ファームウェアとプログラムの両方を製造元の Web サイトからダウンロードすることをお勧めします。 これにより、最新バージョンを使用していることが保証されます。 ただし、付属の光ディスクを PC ドライブに挿入するだけで、必要な情報がすべて記録されます。 ドライブにハードドライブが付属している場合は、ファームウェアがすでにインストールされているため、この手順はスキップできます。

ネットワーク設定

ほとんどの場合、ドライブ上で特別なネットワーク設定は必要ありません。 DHCP 経由でルーターからアドレスを受け取ります。多くの場合、メーカーが提案した名前が適切です。 ただし、必要な場合 (たとえば、新しい名前を指定する場合、または設定から​​デフォルトのルーター アドレスを削除してドライブのインターネットへのアクセスを拒否する場合)、「コントロール パネル - ネットワーク」ページを使用できます。 ここでジャンボ フレームのサポートを有効にすることもできます。

ディスク構成の選択

ファームウェアをインストールした後、ハードドライブ構成を選択する必要があります (場合によっては、ファームウェアのインストールと同時に作成されます)。 複数ある場合は、RAID アレイ オプションのいずれかを選択できます。 主要な特性の簡単な比較特性を表に示します。 ボリュームの式では、N はディスクの数、S はそのうちの 1 つのボリュームです (ディスクは同じであると想定されており、ほとんどの場合、これは最適な操作に必要です)。

モードディスクの数全体のボリューム長所マイナス
個別のディスク (ベーシック)1 S最大限の独立性フォールト トレランスがなく、ディスクを組み合わせることができない
JBOD2つ以上S×N最大ボリュームの単一アレイ
RAID02つ以上S×N最大速度1 つのディスクに障害が発生すると、すべての情報が失われます
RAID12 S使用可能な容量が少ない
RAID53つ以上S×(N−1)単一ディスク損失に対する耐障害性3 つ以上のディスクが必要、弱いシステムでは書き込み速度が遅い

一部のメーカー、特にここでレビューした Synology は、簡略化された構成で独自の RAID 実装を提供しています。アレイを拡張する場合は、ディスクを追加するか、より容量の大きいものに変更するだけで済みます。

ほとんどのモデルでは、一度に複数のアレイを作成できますが、唯一の制限はディスクの数です。 たとえば、それらが 4 つある場合、2 つから RAID1 ミラーを作成し、2 番目のペアを RAID0 に組み立てることができます。

ファームウェア自体は各ディスクにインストールされることに注意してください。これにより、フォールト トレランスが向上し、RAID1/RAID5 でディスクを順番に交換することで、データを失うことなくアレイの移行および拡張機能を実装できます。

通常、システム パーティションに加えてスワップ パーティションも存在するため、ユーザーにとって有用な合計ボリュームは若干小さくなります。 ただし、1 TB ディスクでの 2 ~ 4 GB の損失はそれほど重大ではありません。

ハードドライブをフォーマットするには、まずデバイスの Web インターフェイスにアクセスする必要があります。 これは、Synology Assistant から行うか、ブラウザでドライブのアドレス/名前を開くだけで実行できます。 名前とパスワードを入力すると、設定にアクセスできるようになります。

次に、ディスクボリュームの設定に進みます。 ハード ドライブが 1 台の場合、オプションは「ベーシック」の 1 つだけです。より正確には、最も便利なディスク構成を自動的に選択し、情報を失うことなく新しいディスクを簡単に追加できる「Synology Hybrid Raid」もあります。 。 検討中の 2 枚組ディスク モデルの場合、これは多少冗長になります。 したがって、2 つのディスクをインストールする場合は、2 つのディスクを 1 つの大きなボリュームに結合する従来の JBOD、RAID0 - 1 つのボリュームに結合してパフォーマンスを向上させるストライプ アレイ、または RAID1 - 2 つのディスクが互いのミラー コピーである RAID1 を選択することをお勧めします。ただし、この場合の有効ボリュームは 1 つのディスクに相当します。 場合によっては、単純に 2 つの独立した「ベーシック」ボリュームを作成し、重要なデータについては 1 つのディスクから 2 番目のディスクへの自動バックアップを設定する方が良い場合もあります。

Synology ファームウェアの最新バージョンでは、各ディスクをいくつかの部分に分割し、それらからアレイを編成することが可能になりました。 これにより、構成の柔軟性が大幅に向上します。 他のメーカーにはこのオプションが (まだ?) ないため、ボリュームごとに 1 つのディスクという昔ながらの方法ですべてを実行します。

最後のステップでは、デバイスは作成後に不良ブロックがないかアレイを完全にスキャンすることを提案します。 最新のハードドライブは非常に信頼性が高いという事実にもかかわらず、これをあきらめないほうが良いです。

共有の作成と権利の定義

ディスク ボリュームを作成した後の次のステップは、システム ユーザーのプログラミングです。 もちろん、管理者アカウントのみで作業することもできますが、これはあまり便利ではありません。 2 番目の極端な方法は、ゲスト アクセスを許可することで、検証はまったく実行されません。 ただし、家庭や単純なネットワークの場合でも、名前とアクセス制御を備えた「フル バージョン」を使用することをお勧めします。

最も便利なオプションは、Windows アカウントと完全に一致するログイン名とパスワードを使用することです。 これにより、ネットワーク リソースにアクセスする際の不要なリクエストが排除されます。 データ損失のリスクを避けるために、メディア プレーヤーなどのユーザーを作成して、一部のリソースに対する読み取り専用権限を与えることも役立ちます。 また、NAS 管理者のパスワードを変更することを忘れないでください。

ユーザーが多い場合は、グループ組織を使用して権限をより簡単に管理することもできます。 これは通常、家庭にとってはやりすぎです。

ユーザー権限は、作成されたディスク ボリュームに対して完全に付与されるのではなく、その上にある共有フォルダーに対して付与されます。 したがって、それらもプログラムする必要があります。 場合によっては、ボリュームを作成したり、特定のサービス (メディア プレーヤーなど) をオンにしたりすると、自動的に表示されます。

この例では、パブリック フォルダーを作成し、そのフォルダーに対する権限をユーザーに割り当てます。

PCからドライブにアクセスする

上記の操作を完了すると、ネットワーク ドライブの主なシナリオ (ネットワーク経由でのファイルの読み取りと書き込み) がすでに使用できるようになります。

Windows ネットワークの実用的な機能をいくつか思い出してみましょう。 最新の主要なネットワーク プロトコルである TCP/IP では、参加者はパケットの交換のみを許可されます。 したがって、その上にさまざまなサービスを実装するには、より高いレベルのプロトコルを使用する必要があります。 詳細には触れませんが、Windows、CIFS、SMB、SAMBA の「ネットワーク」/「ネットワーク ネイバーフッド」はすべて、ネットワーク デバイス間でファイルを共有し、ネットワーク印刷できる機能を意味します。 このプロトコルの実装は、Windows PC だけでなく、メディア プレーヤー、テレビ、衛星放送受信機、IP ビデオ カメラ、そしてもちろん、Linux や Mac OS (同様の「標準」) などの他のオペレーティング システムでも可能です。この OS の /common プロトコルは AFP と呼ばれます)。 ほとんどの場合、これらのプロトコルはホーム ネットワークのローカル セグメントでのみ機能します。

リソースにアクセスするには、サーバーの名前とそのサーバー上の共有フォルダーの名前を知っている必要があります。 Windows エクスプローラーで、アドレス バーに「\ServerFolder」と入力するだけで、サーバー サーバー上にあるフォルダー フォルダーに移動します。 この例では、「\DiskStationpublic」と記述する必要があります。 Windows のユーザー名とパスワードが NAS に記録されており、このフォルダーに対する権限がある (またはゲスト アクセスが有効になっている) 場合は、その内容が表示されます。そうでない場合は、サーバーが名前とパスワードを要求します。 Windows ネットワークでは、同じサーバー上の異なるリソースには一度に 1 つのユーザー名とパスワードしかアクセスできないことに注意してください。

ネットワーク リソースにアクセスするためにローカルの「レター」を常に接続しておくと便利なことがよくあります。 これも簡単です。エクスプローラーで「\DiskStation」を開き、「パブリック」アイコンを左クリックして「接続」を選択します。 「ログオン時に復元」ウィンドウにチェックマークが付いている場合は、選択した文字でこの共有フォルダーに常にアクセスできます (もちろんドライブの電源が入っている場合)。 ちなみに、この操作には Synology Assistant を使用することもできます。

高度なNAS設定

ネットワークドライブの初回起動後に他にどのようなアクションを実行する必要があるかを簡単に説明します。

ホーム ネットワークが従来の「WORKGROUP」以外のワークグループ名を使用していることが判明する場合があります。 次に、ネットワークドライブでも変更することをお勧めします。 これは、Windows のプロトコル設定 - 「コントロール パネル - Win/Mac/NFS」で行います。 常時稼働しているデバイスがネットワーク ストレージ デバイスのみである場合は、そのデバイス上で「ローカル マスター ブラウザ」機能を有効にすることができます。これにより、Windows ネットワーク環境の安定性が向上します。 デバイスは名前または IP アドレスでいつでも見つけることができますが、「ネットワーク」ウィンドウ内の実際のデバイスのリストが不完全である場合があります。

インターネットから NAS へのアクセスを提供する予定の場合は、パスワードを推測する際の自動ロックを有効にすることをお勧めします。 これにより、初心者ハッカーからの攻撃を恐れることがなくなります。

暗号化された HTTPS プロトコルを介して Web インターフェイスにアクセスできるようにすることも必要であり、その使用が必須であることを示すこともお勧めします。 これは、「コントロール パネル - DSM 設定」タブで行います。

最新のブラウザのほとんどは、HTTPS を使用するときにネットワーク ストレージに関する問題を引き起こす可能性が高いことに注意してください。 実際のところ、使用する SSL 証明書は「自己署名」されており、グローバルな認証局を通じてその発行元を検証することは不可能です。 通常、この場合、ブラウザはこのサーバーを独自の「信頼できる」リストに含めるように要求します。 商用セグメントで作業するには、信頼できる機関から正式に受け取った証明書をネットワーク ストレージ デバイスにインストールできます。

ルーターと同様に、NAS は問題が発生した場合に電子メール メッセージを送信できます。 このオプションは、SMTP をサポートする多くのパブリック電子メール サービスで使用できます。

ほとんどのデバイスには、電源管理のオプションがあります。たとえば、非アクティブな場合にハードドライブの電源をオフにしたり、動作スケジュールをプログラムしたりすることもできます。 固定モードとシャットダウンを伴うモードのどちらがハードドライブにとってより「有用」であるかについての議論は、今日でも続いています。 ここで明確なアドバイスをすることは不可能です。 状況を確認することをお勧めします。ドライブが 1 日に 2 回以上使用される場合は、ドライブの電源を入れたままにすることをお勧めします。 実際、最新のディスクは非常に信頼性が高く、オン中に落とさなければ、時間的にもオン/オフ サイクルにおいても非常に長期間持続します。

ちなみに、信頼性を高めるために、ネットワーク ドライブ (および他の機器も) を無停電電源装置を介して接続することを強くお勧めします。 NAS 互換性リストを使用してモデルを選択すると、USB 経由でデバイスを接続するときに、UPS がドライブに問題を報告し、必要に応じてドライブを安全にオフにすることができます。

インターネットからのファイルへのアクセス

ルーターと NAS を一緒に使用する演習として、インターネットからファイルへの完全かつ安全なアクセスを組織するためのオプションの 1 つについて説明します。

Synology には、これに非常に便利なオプション、組み込みのファイル マネージャー FileStation が用意されています。 HTTPS を有効にする必要があります。 ポートはデフォルトの 7001 のままにすることができますが、ルーターが異なる外部ポートと内部ポートを使用できない場合は、「通常」ではないポートに変更することをお勧めします。

Synology のユーザー権利制御は追加のサービスにも適用されるため、FileStation が適切なユーザーに承認されていることを確認する必要があります。

次の 2 つのステップはルーター上で実行されます。 まず、DHCP サーバーのプロパティ ページで、LAN 範囲内の IP アドレスの 1 つに NAS のハード バインド MAC アドレスを割り当てます。 これにより、再起動後に IP アドレスが変更されないことを確認できます。

さて、最後の仕上げは、外部ポートを FileStation にブロードキャストする目的です。 この例では、外部ポート 39456 を選択し、それを内部 7001 のネットワーク ストレージ デバイスのアドレス 192.168.1.40 に転送しました。

これでセットアップは完了です。 これで、アドレス バーにリンク「https://myhost.homedns.org:39456」を入力することで、インターネット上のどこからでもブラウザを介してファイルにアクセスできるようになります (アドレスは前の記事の例です)。ユーザー名とパスワードを指定します

次の記事では、追加のネットワーク ストレージ サービスの操作について説明します。

Android は、他のプラットフォームのディスクベースのファイル システムと同様のファイル システムを使用します。 このチュートリアルでは、File API を使用して Android ファイル システムを操作してファイルを読み書きする方法について説明します。

内部ストレージまたは外部ストレージを選択する

すべての Android デバイスには、「内部」ストレージと「外部」ストレージという 2 つのファイル ストレージ領域があります。 これらの名前は、Android の初期の時代に由来しており、その当時、ほとんどのデバイスは内蔵の永続メモリ (内部ストレージ) とマイクロ SD カードなどのリムーバブル ストレージ (外部ストレージ) を提供することが示唆されていました。 一部のデバイスは、永続ストレージ領域を「内部」パーティションと「外部」パーティションに分割します。 リムーバブル ストレージがなくても、常に 2 つのストレージが存在し、外部ストレージの API の動作は、リムーバブルかどうかに関係なく同じです。 次のリストは、各リポジトリに関する事実をまとめたものです。

内部記憶装置:

  • いつでもご利用いただけます。
  • ここに保存されたファイルには、デフォルトではアプリケーションからのみアクセスできます。
  • ユーザーがアプリをアンインストールすると、システムは内部メモリからすべてのアプリ ファイルを削除します。

ユーザーも他のアプリケーションもファイルにアクセスできないようにしたい場合は、内部ストレージが最適です。

外部記憶装置:

  • ユーザーは外部ドライブを USB ストレージとしてマウントしたり、場合によってはデバイスから取り外したりできるため、常に利用できるわけではありません。
  • 読み取りは全員に許可されているため、ここに保存されたファイルは制御なしに読み取られる可能性があります。
  • ユーザーがアプリケーションをアンインストールするとき、 getExternalFilesDir() からのディレクトリにアプリケーション ファイルを保存した場合にのみ、システムはここからアプリケーション ファイルを削除します。

役立つヒント: アプリはデフォルトで内部ストレージにインストールされますが、マニフェストで android:installLocation 属性を指定すると、アプリを外部ストレージにインストールできます。 APK サイズが非常に大きく、内部メモリより大きい外部ストレージ領域がある場合、ユーザーはこのオプションを高く評価します。 詳細については、「アプリケーションのインストール パス」を参照してください。

外部ドライブのアクセス許可を取得する

外部ドライブに書き込むには、マニフェスト ファイルで WRITE_EXTERNAL_STORAGE 権限をリクエストする必要があります。

...

注意: 現在、すべてのアプリケーションは、特別な許可なしに外部ストレージ デバイスから読み取る機能を持っています。 ただし、これは将来のリリースで変更される予定です。 アプリケーションが外部ストレージを読み取る必要がある (書き込みはしない) 場合は、READ_EXTERNAL_STORAGE 権限を宣言する必要があります。 アプリケーションが期待どおりに動作し続けることを保証するには、変更が有効になる前にこの権限を今すぐ宣言する必要があります。

...

ただし、アプリケーションが WRITE_EXTERNAL_STORAGE 権限を使用している場合は、暗黙的に外部ストレージを読み取る権限も持ちます。

ファイルを内部ストレージに保存するためのアクセス許可は必要ありません。 アプリケーションには、内部ストレージ ディレクトリ内のファイルの読み取りと書き込みの権限が常にあります。

ファイルを内部ストレージに保存します

ファイルを内部ストレージに保存する場合、次の 2 つのメソッドのいずれかを呼び出して、対応するディレクトリを File オブジェクトとして要求できます。

getFilesDir() アプリケーションの内部ディレクトリである File を返します。 getCacheDir() アプリケーションの一時キャッシュ ファイルの内部ディレクトリである File を返します。 ファイルを一度に 1 つずつ削除する必要がなくなったことを確認し、一度に使用するメモリ量に 1 MB などの適切な制限を設けてください。 システムのスペースが不足すると、警告なしにキャッシュ ファイルが削除される場合があります。

これらのディレクトリのいずれかに新しいファイルを作成するには、File() コンストラクターを使用して、内部ディレクトリを指す上記のメソッドのいずれかによって提供される File を渡します。 例えば:

ファイル file = new File(context.getFilesDir(), ファイル名);

あるいは、openFileOutput() を呼び出して、内部ディレクトリ内のファイルに書き込む FileOutputStream を取得することもできます。 たとえば、ファイルにテキストを書き込む方法は次のとおりです。

文字列ファイル名 = "myfile"; 文字列 string = "Hello world!"; FileOutputStream 出力ストリーム; try ( OutputStream = openFileOutput(filename, Context.MODE_PRIVATE); OutputStream.write(string.getBytes()); OutputStream.close(); ) catch (例外 e) ( e.printStackTrace(); )

または、いくつかのファイルをキャッシュする必要がある場合は、 createTempFile() を使用する必要があります。 たとえば、次のメソッドは URL からファイル名を抽出し、アプリケーションの内部キャッシュ ディレクトリに同じ名前のファイルを作成します。

Public File getTempFile(Context context, String url) ( File file; try ( String fileName = Uri.parse(url).getLastPathSegment(); file = File.createTempFile(fileName, null, context.getCacheDir()); catch (IOException e) ( // ファイル作成中にエラーが発生しました) return file; )

注: アプリの内部ストレージ ディレクトリはアプリのパッケージ名を使用し、Android ファイル システムの特別な場所にあります。 技術的には、ファイルのアクセス モードを読み取りに設定すると、別のアプリケーションが内部ファイルを読み取ることができます。 ただし、他のアプリケーションもパッケージ名とファイル名を知る必要があります。 他のアプリケーションは内部ディレクトリを表示できず、明示的に読み取りまたは書き込み権限を設定しない限り、読み取りまたは書き込みアクセス権を持ちません。 したがって、内部メモリ内のファイルに MODE_PRIVATE を使用している間は、他のアプリケーションからファイルにアクセスすることはできません。

ファイルを外部ドライブに保存します

たとえば、ユーザーがストレージを PC にマウントする場合や、外部ストレージを提供する SD カードを取り外す場合など、外部ストレージが利用できない場合があるため、パーティションにアクセスする前に、そのパーティションがアクセス可能であることを常に確認する必要があります。 getExternalStorageState() を呼び出すことで、外部ストレージの状態をクエリできます。 返された状態が MEDIA_MOUNTED の場合、ファイルの読み取りと書き込みが可能です。 たとえば、次の方法はストレージの可用性を判断するのに役立ちます。

/* 外部ストレージが読み取りおよび書き込みに使用できるかどうかを確認します */ public boolean isExternalStorageWritable() ( String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) ( return true; ) return false; ) / * 外部ストレージが少なくとも読み取りに利用可能かどうかを確認します */ public boolean isExternalStorageReadable() ( String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) ( true を返す; ) false を返す; )

外部ストレージ デバイスはユーザーや他のアプリケーションによって変更できますが、ここに保存できるファイルには次の 2 つのカテゴリがあります。

パブリック ファイル 他のアプリケーションやユーザーが自由にアクセスできるファイル。 ユーザーがアプリケーションをアンインストールしても、これらのファイルはユーザーが利用できる状態のままでなければなりません。

たとえば、アプリケーションを使用して撮影した写真や他のダウンロードしたファイルなどです。

個人ファイル アプリケーションに正当に属しており、ユーザーがアプリケーションをアンインストールするときに削除する必要があるファイル。 これらのファイルは技術的にはユーザーや他のアプリケーションからアクセスできますが、次の理由により、 これらは外部ストレージ上にあり、アプリケーションの外部のユーザーにとって実際の価値を持たないファイルです。 ユーザーがアプリケーションをアンインストールすると、システムはアプリケーションの外部プライベート ディレクトリからすべてのファイルを削除します。

たとえば、アプリケーションによってダウンロードされた追加のリソースや一時メディア ファイルなどです。

共有ファイルを外部ストレージ デバイスに保存する場合は、メソッドを使用して、外部ストレージ デバイス上の対応するディレクトリを表すファイルを取得します。 このメソッドは、 DIRECTORY_MUSIC や DIRECTORY_PICTURES などの他のパブリック ファイルと論理的に整理できるように、保存するファイルのタイプを示す引数を受け取ります。 例えば:

Public File getAlbumStorageDir(String albumName) ( // ユーザーのパブリック ピクチャ ディレクトリのディレクトリを取得します。 File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), albumName); if (!file.mkdirs()) ( Log.e(LOG_TAG, "ディレクトリが作成されていません"); ) ファイルを返します; )

アプリケーションにプライベートなファイルを保存したい場合は、 getExternalFilesDir() を呼び出し、必要なディレクトリのタイプを示す名前をそれに渡すことで、適切なディレクトリを要求できます。 この方法で作成された各ディレクトリは、ユーザーがアプリをアンインストールするときにシステムによって削除されるアプリのすべての外部ストレージ ファイルをカプセル化する親ディレクトリに追加されます。

たとえば、1 つのフォト アルバム用のディレクトリを作成するために使用できる方法を次に示します。

Public File getAlbumStorageDir(Context context, String albumName) ( // アプリのプライベート写真ディレクトリのディレクトリを取得します。 File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), albumName); if (!file.mkdirs( )) ( Log.e(LOG_TAG, "ディレクトリが作成されていません"); ) ファイルを返します; )

定義済みのサブディレクトリ名がファイルに適合しない場合は、getExternalFilesDir() を呼び出し、代わりに null を渡すことができます。 これにより、外部ドライブ上のアプリケーションのプライベート ディレクトリのルート ディレクトリが返されます。

パブリックなファイルに getExternalStoragePublicDirectory() を使用するか、アプリケーションにとってプライベートなファイルに getExternalFilesDir() を使用するかに関係なく、 DIRECTORY_PICTURES などの API 定数によって提供されるディレクトリ名を使用することが重要です。 これらのディレクトリ名により、ファイルがシステムによって期待どおりに解釈されることが保証されます。 たとえば、DIRECTORY_RINGTONES に保存されたファイルは、メディア スキャナ システムによって音楽ではなく着信音として分類されます。

空きスペースをリクエストする

保存するデータの量が事前にわかっている場合は、 getFreeSpace() または getTotalSpace() を呼び出すことで、IOException をスローせずに利用可能な十分なスペースがあるかどうかを判断できます。 これらのメソッドは、それぞれ、現在利用可能なスペースと合計パーティションスペースに関する情報を提供します。 この情報は、ドライブ パーティションが特定のしきい値を超えていっぱいになることを回避するのにも役立ちます。

ただし、システムは、 getFreeSpace() で示されたバイト数を書き込めることを保証しません。 返された数値が保存するデータのサイズよりも数 MB 大きい場合、またはファイル システムの空き容量が 90% 未満の場合は、おそらく問題ありません。 それ以外の場合は、ストレージに書き込む価値はおそらくありません。

注: ファイルを保存する前に空き容量を確認する必要はありません。 代わりに、ファイルの書き込みを試み、IOException が発生した場合はそれをキャッチすることができます。 必要なスペースの量が正確にわからない場合は、これを行う必要があるかもしれません。 たとえば、PNG 画像を JPEG に変換して保存する前にファイルのエンコードを変更した場合、ファイル サイズを事前に知ることはできません。

ファイルの削除

不要になったファイルは必ず削除してください。 ファイルを削除する最も簡単な方法は、 delete() を呼び出すことです。

MyFile.delete();

ファイルが内部ストレージに保存されている場合は、 deleteFile() を呼び出して、Context にファイルを検索して削除するように依頼することもできます。

MyContext.deleteFile(ファイル名);

注: ユーザーがアプリケーションを削除すると、Android システムは以下を削除します。

  • 内部ストレージに保存されているすべてのファイル
  • getExternalFilesDir() を使用して外部ドライブに保存されたすべてのファイル。

ただし、getCacheDir() によって作成されたすべてのキャッシュ ファイルを定期的に手動で削除し、不要になった他のファイルも定期的に削除する必要があります。

クラウド データ ストレージ サービスは、宇宙のどこにいても、あらゆるデバイスからデータにアクセスしたいすべての人にとって、真の万能薬となっています。 私たちは喜んでデータをクラウドに移行し、うまく利用していますが、iCloud や Dropbox のハッキングに関する最新ニュースを時々注意深く読む程度でした。 最初は、クラウドがユーザー自身ではなく「誰か」によって制御されているという事実に悩まされる人もいます。 OwnCloud を作ったのは、まさにこのような愛好家たちです。

それは何ですか

「独自のクラウド」とは、独自の Web サーバーまたは Web サイト上で実行される個人用ストレージにすぎません。 OwnCloud の主な特徴は、無料でオープンソースであることです。 一般に、上記のホスティング プラットフォームが利用可能な場合、ユーザーは独自の Dropbox のようなストレージを展開するのに約 5 分かかります。高度なコーディングを必要とせず、特別な知識は必要ありません。 さらに、ユーザーは、他のプロジェクト参加者が自分のニーズに合わせて作成したアプリケーション (テキスト エディター、タスク リスト、その他の便利なもの) にアクセスできます。

フェイスブックグーグルプラスアクセスが拒否されたか、外部ドライブ上のファイル/フォルダーへのアクセス許可に問題がありました

Windows 2000 Pro、XP、または Vista を実行しているコンピュータに外部ドライブを接続するときに、アクセス許可/特権を割り当てる必要がある場合があります。 ファイルは別のアカウントによって所有されているため、そのドライブまたはフォルダを開こうとすると、「アクセスが拒否されました」または「利用できません」エラーが表示される場合があります。

XP Professional の現在のユーザーに所有権を譲渡する方法については、以下を参照してください。 これらの手順は Windows Vista にも適用されます。
(XP ホーム。)

Windows XP HOME で所有権を現在のユーザーに譲渡するには:

  • セーフモードで起動します。
  • 目的のファイル/フォルダーを右クリックし、「プロパティ」セクションを開きます。
  • [セキュリティ] > [詳細設定] > [所有者] をクリックし、これらのファイルとフォルダーを所有するコンピューター上のユーザー アカウントを選択します。
    [サブコンテナとフォルダーの所有者を置き換える] チェックボックスをオンにすると、フォルダー内のすべてのファイルが変更を継承できるようになります (フォルダーのアクセス許可が変更された場合のみ)。
  • 「フォルダーの内容を読み取る権限がありません [ フォルダ名]。 このフォルダーのアクセス許可を変更して、フル コントロール権限を付与しますか? 「はい」ボタンをクリックすると、すべての権限が置き換えられます。」というメッセージが表示されるので、「はい」ボタンをクリックします。
  • 次の Microsoft サポート センターの記事を参照してください。

    アクセス許可を変更できない場合は、Windows の暗号化機能を使用してファイルが暗号化されているかどうかを確認してください。 通常の黒の代わりに、緑のフォントが使用されます。

    これらのファイルを回復するには、ドライブを元のコンピュータに再接続する必要があります。 ファイルは Seagate ソフトウェアを使用せずに暗号化されます。 詳細については、次の Microsoft サポート技術情報の記事を参照してください。

    最後に、ファイル構造が破損する可能性があります。

    • ディスク チェックを実行して、破損の修復を試みます。
    • パーティションが破損している場合は、上記の手順に従ってください。

    サードパーティの開発者および Web サイトの表示。 Seagate は、情報提供のみを目的としてサードパーティ開発者およびサードパーティ製品を特定しており、言及されている企業を(直接的または間接的に)支持したり推奨したりするものではありません。 Seagate は、そのような企業または製品のパフォーマンスまたは信頼性に関して、いかなる種類の保証も行いません (黙示的またはその他の保証を含む)。 Seagate は、言及された企業のいずれとも提携しておらず、またそれらの企業を管理していないため、これらの企業に関して一切の責任を負わず、言及された企業の行為または製品に関していかなる責任も負いません。 企業と取引する前に、独自の評価を行ってください。 仕様および保証情報については、該当するメーカーに直接お問い合わせください。 このドキュメントには、Seagate が管理していないサードパーティの Web サイトへのリンクが含まれています。 このようなリンクは便宜のために提供されており、ユーザー自身の責任で使用されます。 Seagate は、そのような Web サイトで提供される資料に関して保証または承認を行わず、それらの資料またはそのような Web サイトの使用について一切の責任を負いません。

    ナファ 647 14.01.10 02:27 現在話題になっている

    記事は役に立ちます。
    実際、保管施設の運用には明らかではないことがたくさんあります。そのため、以下の点を追加します。
    1. 複数のプログラマーが作業する場合、オプションとして、
    通常、勤務日は次のように始まります。
    コンフィギュレーターでデータベースを起動し、構成ルートを右クリックしてストレージから取得し、「再帰」チェックボックスをオンにして、「OK」をクリックします。 その後、他の人がリポジトリから開発したすべてのものを構成に取り込みます。 DB自体は更新しません!!!
    次に、「構成をデータベース構成と比較」したいと思います。そして、グループ内の他のプログラマによって前日に行われたすべての変更のリストが表示されます。 変更について質問がある場合は、変更を行った担当者にお問い合わせください。
    すべてが整理されたら、それをデータベースに保存します。
    これをストレージ構成と比較してみてはいかがでしょうか。第一に、あなた自身が作業しているオブジェクトが表示されなくなり、第二に、動作が速くなります。
    2. 日中: 緊急の変更 (動的更新の場合) はすぐにリポジトリに送信されます。 緊急ではありません - すべての関連オブジェクトを変更した後です。 (以下の説明を参照)
    3. 一日の終わりに (データベースを完全に更新する必要がある場合は、その前に) できる限りすべてをストレージに保存します。
    これは必須の注文ではありませんが、非常に便利です。

    4. すぐに投稿してみませんか:
    変更の整合性は、リンクがある場合のみ 1C によって制御されるためです。 つまり、たとえば、ディレクトリ「Customer Cars」を作成し、そのディレクトリへのリンクを「請求書」に追加した場合、「請求書」をストレージに配置できるのは、ディレクトリ「Customer Cars」を作成した後(または同時に)だけです。車"。 ただし、たとえば、請求書の転記時に呼び出される一般モジュール プロシージャでこのディレクトリを使用した場合、この一般モジュールはディレクトリを配置しなくてもストレージに簡単に収まります。 この後、別のプログラマがこのモジュールをリポジトリから受け取った場合、請求書はそのプログラマのデータベースに投稿されなくなります。 (メインデータベースを更新すると、そこでも停止します)。
    これは単なるエラーであるため、これも良いケースです。 ただし、たとえば、ドキュメント内の属性のタイプを文字列からテキストに変更し、一般モジュールのプロシージャで If Attribute = "1" のチェックがあり、If Attribute = 1 となり、モジュールが配置されたとします。つまり、そのようなモジュールを受け取った人は、文書が誤って実行されることになります(これがメインデータベースでない場合は問題ありません)。 したがって、変更を「完全なパッケージ」(1 つのトピックで変更されたすべてのオブジェクト)としてリポジトリに送信することをお勧めします。別のタスクで何かが必要な場合は、新しいタスクのためにすぐに取得するか、単に「キャプチャしたまま」にすることができます。リポジトリに配置するとき。

    この点に関して、私は次の点をよく理解できませんでした。

    プログラマーが多数いる場合は、全員の変更を 1 つずつリポジトリに送信する必要があります。事前に全員の作業をローカル データベース構成で外部ファイルにアップロードし、(マージが別のワークステーションから行われる場合は) UPDATE を忘れずに行う必要があります。各マージの前にリポジトリからローカル データベースを最新バージョンに更新し、以前に接続していた同志の変更がそこに存在します。

    不思議なことに、数人が同時に変更を加えても、速度が少し遅くなる以外は問題はありませんでした。 このため、オブジェクトのキャプチャでは、2 人が同時に同じものを修正しないように設計されています。 さらに、1 人の開発者が「事前レポート」などのドキュメントを変更し、2 人目の開発者が「受信」せずにすぐにそれをキャプチャした場合 (たとえば、オブジェクトがストレージに置かれたばかりであるなど)、 1C はこれを追跡し、すでに新しい修正バージョンを彼に渡します。 (とても面白いことが起こります - 文書を見ると - 5 つの詳細があり、それを手に取ります - すでに 15 です)。

    また、なぜ作品を外部ファイルにアップロードする必要があるのか​​もわかりません。

    4. プログラマーにとって、1Sovskaya のロードとアンロードではなく (排他モードが必要で、それほど高速ではないため)、バックアップを復元するか、単にデータベースをコピーするだけで、データベースのコピーを作成する方が簡単です。

    5. 新しいオブジェクト (ドキュメント、参考書など) を追加する必要がある場合は、構成ルートを取得して追加し、最小限の詳細を追加し (完全に「空」のオブジェクトが常に保存されるわけではありません)、ルートを次の場所に置きます。ストレージを解放し(このオブジェクトも同時に放棄されます)、再度オブジェクトを拾います。 (ルートを長期間捕らえたままにしないために、他の人もそれを必要とします)。

    6. オブジェクトへのアクセス権を修正したい場合は、オブジェクトを取得しましたが、アクセス権はまだ利用できません。適切なロールを取得します。

    7. デバッグは最新のデータを使用して行うのが最適であるため、作業データベースを更新する必要があります。 これを行うには、すべての変更をストレージに配置し、データベースをストレージから切断し、メイン データベースをバックエンドのデータベースに (バックアップから、または単にコピーして) コピーし、再度接続します。

    8. 「ストレージからすべてを取得する」(ステップ 1) と、1C が大量のメッセージを生成し、それが「失敗」したと書き込みます (オブジェクトのリストが変更されます)。 これは、長い間変更を受け取っていないことを意味します。 問題ありません。正常に動作するまで、もう一度 [OK] をクリックします。

    9. 1C がリポジトリから受け取った変更の保存を拒否する場合があり、メッセージがまったく不明瞭です。 犯人はたいてい「情報レジスター」です。 どの情報レジスタの構造が変更されたかを特定し、データベース内のすべてのレコードを削除します。その後、すべてが必要に応じて更新されます。

    10. 作業データベースはメインのデータベースから作成されているため、構成の名前は同じであり、混同しやすいため、ユーザーがレポートで自分は 100 ルーブルを持っているのに、あなたは 100,000 ルーブルを持っていると言うと誤解が始まります。 。 オプションとして、プログラムの開始時にデータベースの種類をチェックし、メインデータベースでない場合はこれを 1C プログラムのタイトルに表示する行をアプリケーション モジュールに追加します (たとえば、「WORKING BASE OF PROGRAMMER」)。イワノフ」)

    11. データベースがストレージに接続されているが、起動時に何らかの理由で接続できなかった場合、「接続に失敗しました。ストレージから切断しました」というメッセージが表示されることがあります (オブジェクトはキャプチャされています)。ここで回答します。 "いいえ"。 ただし、誤って「はい」と答えてしまった場合は、再度接続しようとしないでください。 まず設定をファイルに保存します。 ストレージに接続すると、データベース構成全体がストレージ構成に置き換えられるためです。 その後、保存したファイルから変更をロードし、さらに作業を進めます。