我正在尝试在 Java 中创建一些内容,该文件将带有一个已保存为字符串的目录的文件,例如:C:\program\example.txt
,并删除所有内容到文件所以剩下的是example.txt
。最终期望的行为是代码将减去用户估算的主目录。这样做的原因是因为我希望我的程序存储目录的方式是这样的
1.如果文件未包含在子目录中(意思是,包含在主目录中),则仅存储文件名。
2.如果文件包含在子目录中,则在文件之前
所以数字1看起来像
“example.txt”和数字2看起来像“subirectory \ example.txt”
这就是我删除主目录的原因。这样程序只会以某种方式从正在打开的文件的目录中减去主目录,并且只保留文件名中的子文件夹(如果它包含在任何文件夹中)。
我无法弄清楚什么样的代码可以做到这一点。困难的部分是,当从打开的文件菜单中抓取并添加文件路径时,它会添加双斜杠。非常感谢您的帮助。
答案 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”。