Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java中的文件位置获取文件名_Java_Url_String_Path_Filenames - Fatal编程技术网

从Java中的文件位置获取文件名

从Java中的文件位置获取文件名,java,url,string,path,filenames,Java,Url,String,Path,Filenames,我有一个字符串,它提供了文件的绝对路径(包括文件名)。我只想知道文件名。最简单的方法是什么 它需要尽可能的一般,因为我不能事先知道什么网址将是。我不能简单地创建一个URL对象并使用getFile()——尽管如果可能的话,这将是理想的——因为它不一定是http://前缀,它可以是c://或类似的东西 new File(fileName).getName(); 或 请注意,第一个解决方案依赖于系统。它只考虑系统的路径分隔符字符。因此,如果您的代码在Unix系统上运行并接收到Windows路径,它将

我有一个
字符串
,它提供了文件的绝对路径(包括文件名)。我只想知道文件名。最简单的方法是什么

它需要尽可能的一般,因为我不能事先知道什么网址将是。我不能简单地创建一个URL对象并使用
getFile()
——尽管如果可能的话,这将是理想的——因为它不一定是
http://
前缀,它可以是c://或类似的东西

new File(fileName).getName();

请注意,第一个解决方案依赖于系统。它只考虑系统的路径分隔符字符。因此,如果您的代码在Unix系统上运行并接收到Windows路径,它将无法工作。处理由Internet Explorer发送的文件上载时就是这种情况。

提供了FilenameUtils类,该类为您提供了一组非常丰富的实用程序函数,用于轻松获取文件名的各种组件,尽管java.io.file类提供了基础。

来自

new File(absolutePath).getName();
这里有两种方法(都是独立于操作系统的)

使用
路径
:从1.7开始

Path p = Paths.get(<Absolute Path of Linux/Windows system>);
String fileName = p.getFileName().toString();
String directory = p.getParent().toString();

总是使用它。没什么好抱怨的。第一个replaceAll参数是错误的,因为斜杠在Java字符串和正则表达式中都是转义字符。它应该是fileName.replaceAll(“\\\\”,“/”)。此外,尽管子字符串不应该是驼峰大小写的,并且应该是“subString”所有小写以达到本机字符串API的subString方法,但这是如何被接受的这么多次的,除非您在这里使用了其他东西,但这可能需要注意。我发现第一个选项(新文件(文件名).getName())并非在所有实现上都是一样的。我发现在Windows上运行的java与在Linux上运行的java之间存在差异。具体而言,Linux实现将\作为文件名的一部分,并且没有将其视为分隔符。如果您想要跨平台实现,则第二个选项更安全。这个答案如何解释接受了这么多次,当没有人同意它有多好(/坏?)时…而使用Commons IO的一行程序在另外两个答案中可用?@kd304,正如你所建议的“项目截止日期教你打字快”,但你打字越少,你就越快!FilenameUtils.getName(path)是最简单/最快/最好的方式。。。
String fileName = FilenameUtils.getName(stringNameWithPath);
Path p = Paths.get(<Absolute Path of Linux/Windows system>);
String fileName = p.getFileName().toString();
String directory = p.getParent().toString();
String name1 = FilenameUtils.getName("/ab/cd/xyz.txt");
String name2 = FilenameUtils.getName("c:\\ab\\cd\\xyz.txt");