(不包括任何外部库。)
在不假定任何文件名的情况下,删除Java中文件名扩展名的最有效方法是什么?
一些例子和预期结果:
(或者应该只 隐藏 最后一个?)
编辑 :原始问题假定输入是文件名(而不是文件路径)。由于一些答案是关于文件路径的,因此此类功能在以下情况下也应起作用:
Sylvain M的回答很好地处理了这种特殊情况。
我将为此目的使用双参数版本的stab,lastIndexOf
以删除一些特殊情况的检查代码,并希望使意图更具可读性。幸得贾斯汀“jinguy”尼尔森提供这种方法的基础:
public static String removeExtention(String filePath) {
// These first few lines the same as Justin's
File f = new File(filePath);
// if it's a directory, don't remove the extention
if (f.isDirectory()) return filePath;
String name = f.getName();
// Now we know it's a file - don't need to do any special hidden
// checking or contains() checking because of:
final int lastPeriodPos = name.lastIndexOf('.');
if (lastPeriodPos <= 0)
{
// No period after first character - return name as it was passed in
return filePath;
}
else
{
// Remove the last period and everything after it
File renamed = new File(f.getParent(), name.substring(0, lastPeriodPos));
return renamed.getPath();
}
}
对我来说,这比特殊格式的隐藏文件和不包含点的文件更清晰。它也使我更清楚地了解您的规格要求;类似于“删除最后一个点及其后的所有内容,并假设该点存在并且不是文件名的第一个字符”。
请注意,此示例还隐含了字符串作为输入和输出。由于大多数抽象都需要File
对象,因此如果这些对象也同时是输入和输出,则会稍微清楚一点。
问题内容: 给定一个文件名,例如: 我想删除扩展名(如果存在)。我怎样用Java做这个?谢谢! 问题答案: 就像是 索引检查可避免将“ ” 等隐藏文件转换为“”,并避免使用诸如的名称。
问题内容: 我有许多扩展名为.txt的文件。如何删除Linux中多个文件的.txt扩展名? 我找到 替代扩展 我也想对子文件夹中的文件执行此操作。 问题答案: 有点危险,因为根据其手册页: 重命名将通过替换第 一次 出现的… 来重命名指定的文件。 像这样的文件名会很乐意做错事。 这是使用和的解决方案: 请记住,如果文件名包含换行符(罕见,但并非不可能),这将中断。 如果您有GNU查找,这是一个更可
[更新] 我正在实现APK扩展文件支持(但没有XAPK ZIP库支持)。 文档表明,如果所需的APK扩展文件丢失(例如从obb文件夹中删除),我的应用程序将重新下载该文件。这种事不会发生在我身上;我的应用一直说不需要下载。似乎Google Play Downloader库从其SQLite数据库下载的信息为空。请注意,我还没有在Google Play上更新APK草案和扩展文件——它们仍然是第一个版本
我一直在尝试让nginx在没有. php或. html扩展的情况下工作,我需要一点帮助。提前感谢您的时间! 我尝试了在如何使用NGINX从url中删除. php和. html扩展中找到的解决方案?但是没有效果 这是我当前的nginx配置。这是几个教程的组合,但它是有效的。
问题内容: 假设我有一个删除扩展名的方法,我需要两个变量的结果,一个是域名,另一个是扩展名。 我尝试过但不起作用,我猜只能用正则表达式.... 问题答案: 这将产生以下数组
问题内容: 我必须将数据从Excel文件导入数据库,并执行此操作,我想检查所选文件的扩展名。 这是我的代码: 但是我总是得到: 选择一个Excel文件! 我找不到我的代码有什么问题,请有人帮忙。 问题答案: 以下 应该 要么