我有一个可以变化的字符串:
String filePath = "/this/is/my/file.txt";
我需要将此字符串转换为其他字符串信息:
"/this/is/my" and "file.txt"
我尝试了这种方法,但失败了(崩溃):
int counter = 0;
filePath = "/this/is/my/file.txt";
String filePath2 = filePath.substring(filePath.lastIndexOf("/") + 1); // return "file.txt"
for (int i = 0; i < filePath2.length(); i++) {
counter++; // count number of char on filePath2
}
String filePath3 = filePath3.substring(filePath.lastIndexOf("") + counter); // Remove "file.txt" from filePath2 depending of character numbers on filePath2 backwards
任何人都知道更好的方法吗?谢谢!
12-05 15:53:00.940 11102-11102/br.fwax.paulo.flasher E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: br.fwax.paulo.flasher, PID: 11102
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.fwax.paulo.flasher/br.fwax.paulo.flasher.MFlasher}: java.lang.StringIndexOutOfBoundsException: length=21; index=29
答案 0 :(得分:3)
Java的File
类怎么样?
File f = new File(filePath);
String directory = f.getParent();
String fileName = f.getName();
答案 1 :(得分:3)
为什么你甚至有你的for循环?
int index = filePath.lastIndexOf("/");
String firstString = filePath.substring(0, index);
String secondString = filePath.substring(index+1, filePath.length());
答案 2 :(得分:1)
您可以使用File
课程。
String filePath = "/this/is/my/file.txt";
File f = new File(filePath);
System.out.println(f.getParent());// \this\is\my
System.out.println(f.getName());// file.txt
请注意,这可以将/
更改为\
,但如果您要将此结果用作与文件相关的其他API中的参数,则此更改不应存在任何问题。