1 つのクラス内に文字列変数がある場合
MainActivity.selectedFilePath
このような値を持っています
/sdcard/images/mr.32.png
ファイル名なしでそのフォルダーまでのパスのみをどこかに印刷したい
/sdcard/images/
できるよ:
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");
String string = "/sdcard/images/mr.32.png";
int lastSlash = string.lastIndexOf("/");
String result = string.substring(0, lastSlash);
System.out.println(result);
new File(MainActivity.selectedFilePath).getParent().getAbsolutePath()
そのパスで File オブジェクトを作成し、 File Classの getPath メソッドを使用します。
String realPath = "/sdcard/images/mr.32.png";
String myPath = realPath.substring(0, realPath.lastIndexOf("/") + 1);
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);
String.lastIndexOf(int ch);
文字chの最後の出現を与えるこれを使用できます
ファイルが実際にボックスに存在する場合は、文字列を File オブジェクトにラップしてFile.getParent()を呼び出すことができます。
ファイルが存在しない場合は、String.split() 関数を使用して、「/」を区切り文字として文字列を分割できます。次に、配列の最後の文字列を削除して再構築できます。ただし、このアプローチはかなり汚いです。
正規表現を使用して、最後の / の後の部分を "" に置き換えることができます。
これを試して :
File file = new File("path");
parentPath = file.getParent();
parentDir = file.getParentFile();
これが解決策です-
String selectedFilePath= "/sdcard/images/mr.32.png";
selectedFilePath=selectedFilePath.substring(0,selectedFilePath.lastIndexOf("/"));
System.out.println(selectedFilePath);