5

1 つのクラス内に文字列変数がある場合

MainActivity.selectedFilePath

このような値を持っています

/sdcard/images/mr.32.png

ファイル名なしでそのフォルダーまでのパスのみをどこかに印刷したい

/sdcard/images/
4

12 に答える 12

14

できるよ:

File theFile = new File("/sdcard/images/mr.32.png");
String parent = theFile.getParent();

または(あまりお勧めしません)

String path = "/sdcard/images/mr.32.png";
String parent = path.replaceAll("^(.*)/.*?$","$1");

見る

于 2012-04-19T12:46:42.143 に答える
6
    String string = "/sdcard/images/mr.32.png";
    int lastSlash = string.lastIndexOf("/");
    String result = string.substring(0, lastSlash);
    System.out.println(result);
于 2012-04-19T12:46:55.847 に答える
2

new File(MainActivity.selectedFilePath).getParent().getAbsolutePath()

于 2012-04-19T12:45:45.553 に答える
2

そのパスで File オブジェクトを作成し、 File Classの getPath メソッドを使用します。

于 2012-04-19T12:45:54.120 に答える
2
String realPath = "/sdcard/images/mr.32.png";
String myPath = realPath.substring(0, realPath.lastIndexOf("/") + 1);
于 2012-04-19T12:46:43.180 に答える
2
final String dir = System.getProperty("user.dir");
String[] array = dir.split("[\\\\/]",-1) ;
String arrval="";

   for (int i=0 ;i<array.length;i++)
      {
        arrval=arrval+array[i];

      }
   System.out.println(arrval);
于 2013-08-29T08:17:12.257 に答える
1

String.lastIndexOf(int ch);文字chの最後の出現を与えるこれを使用できます

于 2012-04-19T12:46:06.707 に答える
1
  • ファイル

ファイルが実際にボックスに存在する場合は、文字列を File オブジェクトにラップしてFile.getParent()を呼び出すことができます。

  • 文字列.分割()

ファイルが存在しない場合は、String.split() 関数を使用して、「/」を区切り文字として文字列を分割できます。次に、配列の最後の文字列を削除して再構築できます。ただし、このアプローチはかなり汚いです。

  • 正規表現

正規表現を使用して、最後の / の後の部分を "" に置き換えることができます。

于 2012-04-19T12:51:30.533 に答える
1

これを試して :

File file = new File("path");

parentPath = file.getParent();

parentDir = file.getParentFile();

于 2012-04-19T12:48:45.537 に答える
0

Apache Commons IO ライブラリのApache FileNameUtils、特にgetFullPath()を確認してください。

于 2012-04-19T12:46:45.067 に答える
0

これが解決策です-

 String selectedFilePath= "/sdcard/images/mr.32.png";
 selectedFilePath=selectedFilePath.substring(0,selectedFilePath.lastIndexOf("/"));
System.out.println(selectedFilePath);
于 2012-04-19T12:49:01.277 に答える