5

私はここで非常に単純なことを尋ねています。Files、FileOutputStreamFileInputStreamを使用していますが、ファイルからいくつかの小道具を取得/設定したいだけです。つまり、ファイルの所有者、アクセス許可の読み取り/書き込みなど

周りを見回すと、 FileDescriptorクラスとFilePermissionクラスが見つかりましたが、どちらを使用できるかわからないため、これについて助けを求めています。実際、私はクラスFileのメソッドsetReadOnly()を使用していますが、それが私が探しているものです。

4

3 に答える 3

4

ここにはいくつかの問題があります。

  1. デフォルトでは、アプリケーションはそれ自体のファイルへの無制限のアクセス (読み取り/書き込み/削除/「実行」...実行の意味は何でも) を持っていますが、他のアプリケーションのファイルへのアクセスはありません。
  2. Android では、Intent を使用しない限り、他のアプリケーションやそのデータとやり取りすることが難しくなっています。インテントを受け取るアプリケーションに依存しているため、インテントはアクセス許可に対して機能しません。おそらく、ファイルのアクセス許可を誰かに知らせるようには設計されていません。これを回避する方法はありますが、アプリケーションが同じ JVM で動作するように設計されている場合 (つまり、同じ JVM で一緒に動作するように設計されたアプリケーション) のみです。

アプリケーションは、独自のファイルのアクセス許可を取得および設定できますが、他のユーザーに対しては実行できません。私の知る限り、SDK には所有権の明示的な概念が公開されていないため、ファイルの所有者を見つけることはできません。

Android は Linux カーネルをベースにしていますが、Linux ではありません。モバイル デバイスで実行するために大幅に最適化されています。アプリケーションが独自のサンドボックスでのみ再生できるマシンを使用している場合は、アクセス許可や所有権などを削除して、より小さくて高速なオペレーティング システムを取得できます。あなたのファイルが持っている唯一の許可は、あなたがそれらに設定した(そして強制した)ものです。他のアプリケーションのファイルが存在しません。

于 2009-02-21T03:17:09.793 に答える
2

Android は、標準の Java API を使用して、ファイルとファイルのアクセス許可を処理します。これは、Java でのアクセス許可について説明しているページです。

基本的に必要なことは、ファイルのFilePermissionオブジェクトを取得し、次にnewPermissionCollection()メソッドを使用して FilePermission オブジェクトからPermissionCollectionを取得し、そのコレクションにアイテムを追加またはコレクションからアイテムを削除することだけです。

于 2009-02-21T01:08:47.730 に答える
1

ええと...パーミッションだけを見たいのなら、「ls -l」だけを使うことはできませんか?

于 2011-03-26T02:14:54.227 に答える