如何从字符串中删除(或减去)“目录名称”?

时间:2015-07-20 05:36:37

标签: java regex

我正在尝试在 Java 中创建一些内容,该文件将带有一个已保存为字符串的目录的文件,例如:C:\program\example.txt,并删除所有内容到文件所以剩下的是example.txt。最终期望的行为是代码将减去用户估算的主目录。这样做的原因是因为我希望我的程序存储目录的方式是这样的 1.如果文件未包含在子目录中(意思是,包含在主目录中),则仅存储文件名。 2.如果文件包含在子目录中,则在文件之前 所以数字1看起来像 “example.txt”和数字2看起来像“subirectory \ example.txt” 这就是我删除主目录的原因。这样程序只会以某种方式从正在打开的文件的目录中减去主目录,并且只保留文件名中的子文件夹(如果它包含在任何文件夹中)。

我无法弄清楚什么样的代码可以做到这一点。困难的部分是,当从打开的文件菜单中抓取并添加文件路径时,它会添加双斜杠。非常感谢您的帮助。

5 个答案:

答案 0 :(得分:5)

如果您希望重复使用变量,可以直接获取文件名并分配给您的变量。

String sampleString = "C:\\program\\example.txt";
File file = new File(sampleString);
sample = file.getName();

或者你可以通过索引"\"

来简单子串
String sampleString = "C:\\program\\example.txt";
sampleString = sampleString.substring(sampleString.lastIndexOf("\\") + 1); 

答案 1 :(得分:4)

这已经在JDK' File class中为您编写:

File file = new File("C:\\program\\example.txt");
System.out.println(file.getName());

getName将只提供文件名,不带路径。

答案 2 :(得分:1)

您可以使用

Paths.get(path).getFileName();

答案 3 :(得分:0)

您可以在java中使用split()函数并将“/”作为分隔符传递给“C:\ program \ example.txt”此字符串然后它将在第二个位置“程序”上存储“C:”位置和“example.txt”在数组中的第三个位置。

然后,如果您访问数组的最后位置,那么您将获得文件名:)

答案 4 :(得分:-1)

如果是Windows版,则\是分隔文件夹的字符。你应该识别最后一个\并获得该位置之后的字符串。

识别你可以使用的最后一个

String s = "C:\\folder\\filename.txt" //every "\" in your path needs to be written as "\\" since you have to escape the character \
int indexOfLastBackslash = s.lastIndexOf("\\"); //the first \ is to escape the character \

然后你可以得到像这样的扩展名的文件名

String name = s.substring(indexOfLastBackslash + 1);

请注意,您应该在最后一个反斜杠的索引中加1,因为在String.substring(int index)方法中,参数是子字符串第一个字符的索引。如果你不添加+1,你将获得“\ filename.txt”而不是“filename.txt”。