web-dev-qa-db-ja.com

Java(Android)のファイルパスからディレクトリを取得する

ファイルパスのディレクトリ部分を取得する関数はありますか?

そうから

String a="/root/sdcard/Pictures/img0001.jpg";

あなたが得る

"/root/sdcard/Pictures"
21
tru7

はい。まず、画像パスを表す File を作成します。

File file = new File(a);

相対パスから開始する場合:

file = new File(file.getAbsolutePath());

次に、 親を取得

String dir = file.getParent();

または、ディレクトリをFileオブジェクトとして使用する場合は、

File dirAsFile = file.getParentFile();
47
Andrey Akhmetov

より良い方法は、FileクラスのgetParent()を使用することです。

String a="/root/sdcard/Pictures/img0001.jpg"; // A valid file path 
File file = new File(a); 
String getDirectoryPath = file.getParent(); // Only return path if physical file exist else return null

http://developer.Android.com/reference/Java/io/File.html#getParent%28%29

10
user370305

ApacheのFilenameUtils を使用することもできます。 C:\ dev\project\file.txtの例では、少なくとも次の機能が提供されます。

  • プレフィックス-C:\
  • パス-dev\project \
  • フルパス-C:\ dev\project \
  • 名前-file.txt
  • ベース名-ファイル
  • 拡張子-txt
3
winterDroid

4日後にこれに関する解決策があります。Android(Java)のFileクラスへのパスを与える際には、次の点に注意してください:

  1. 内部ストレージのパスを使用しますString path = "/ storage/sdcard0/myfile.txt";
  2. path = "/ storage/sdcard1/myfile.txt";
  3. マニフェストファイルに権限を記載します。

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

  4. 最初に確認のためにファイルの長さを確認します。
  5. ES File Explorerでsdcard0およびsdcard1がこれと同じかそうでないかについてパスを確認してください......

例えば.

File file=new File(path);
long=file.length();//in Bytes
0
Mahadev Mane