`

File renameTo() 在Linux OS的 bug

阅读更多
    最近,公司的服务器 迁移到 云服务器上,出现了 web应用系统 的tomcat报错日志信息。
参看日志显示  程序指定的目录文件写入失败,进一步参看源代码:

   File.renameTo(File f);


定位到此方法,目标文件未写入成功, 经查是由 File.renameTo 方法 对 Linux系统的 文件存放目标目录格式为 NFS 不支持 导致(原服务器文件格式为 ext3 是可以的,云服务器的目录格式为 NFS,源码、JDK 和其他配置都未变)。

改用: org.apache.commons.io.FileUtils


import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class FileTest {

	
	public  static void main(String[] args) throws IOException{		
		
		File sourceFile = new File("C:/Desktop/timg.jpg");
		File targetFile = new File("D:/.m2/timg1.jpg");
		
		//复制文件
		FileUtils.copyFile(sourceFile, targetFile);
		
		//移动文件到指定目录
		FileUtils.moveFile(sourceFile, targetFile);
		
//		File f = new File("C:/Users/Administrator/Desktop/timg.jpg");
//		f.deleteOnExit();
	}
	
}




所以当遇到 多文件系统 的时候,请尽量避免使用File.renameTo(File)方法,可是使用apache的commons-io包去替换,避免一些潜在BUG。

参考:
https://blog.csdn.net/findmyself_for_world/article/details/41648095
分享到:
评论

相关推荐

    请慎用java的File#renameTo(File)方法

    以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名、移动文件的目的。不过后来经常发现问题:File#renameTo(File)方法会返回失败(false),文件没有移动,又查不出原因,再后来...

    Better File Rename 绿色汉化版

    Better File Rename 5.7 绿色汉化版 Better File Rename 是一款强大易用的文件批量改名软件。内置最全面的重命名选项。 现已支持64位操作系统。 5.7 英文原版更新说明: ① 添加了 PDF 格式的用户手册 ② 在所有...

    Better File Rename v5.7

    安装完成后,软件图标会出现在Windows资源管理器的上下文菜单中,用户只需右键点击需要重命名的文件或文件夹,选择"Better File Rename",即可启动批量重命名的操作流程。 总的来说,"Better File Rename v5.7" 是...

    Better File Rename文件重命名工具

    "Better File Rename"是一款高效的文件重命名工具,专为用户提供了丰富多样的文件批量重命名功能,极大地提升了在日常工作中处理大量文件的效率。这款工具不仅适用于个人用户,也广泛应用于企业和团队,使得文件管理...

    Quick File Rename 1.2

    Quick File Rename 1.2在执行重命名操作时,应该会遵循一定的规则,避免因错误的重命名导致文件损坏。例如,如果目标后缀已经存在,软件可能会询问你如何处理,以防止覆盖已有文件。 总的来说,Quick File Rename ...

    Better File Rename

    7. **跨平台兼容**:"Better File Rename"通常支持多种操作系统,如Windows、Mac OS等,满足不同用户的需求。 在使用"Better File Rename"时,用户首先需要启动程序,然后通过文件浏览器导入或拖放待重命名的文件或...

    Better File Rename 4.9.4

    是一款WINDOWS资源管理器的扩展外壳,可以帮助你快速简便的修改文件名和文件修改时间,可以分别处理文件名和扩展名。 一款WINDOWS资源管理器的扩展外壳, 可以帮助你快速简便地修改文件名和文件修改时间。...

    Better File Rename 好用的文件重命名工具

    2. **项目文件整理**:在项目中,文件名往往需要包含特定的信息,如版本号、日期等,Better File Rename能有效解决这个问题。 3. **学术研究**:论文、研究报告的整理,可以通过重命名统一格式,方便管理和检索。 ...

    rename_file_v1.1.zip

    由于源代码包含在rename_file_v1.1.zip压缩包内,用户还可以根据自身需求进行二次开发和定制,以满足更个性化的文件管理需求。 总的来说,rename_file_v1.1是一个强大且易用的文件批量重命名工具,尤其适合处理大量...

    linux下用renameTo方法修改java web项目中文件夹名称的实例

    renameTo 方法在 Linux 环境中的使用 在 Linux 环境中,我们可以使用 renameTo 方法来修改 Java Web 项目中的文件夹名称。以下是一个示例代码: ```java public void renameFile(String oldName, String newName...

    rename file

    【标题】:“rename file”指的是批量重命名文件的程序,这是一个在IT领域常见的操作,尤其在数据管理和自动化脚本编写中。批量重命名文件能够帮助用户高效地整理大量文件,使其具有更统一、更具描述性的名称,从而...

    file_rename.zip

    标题 "file_rename.zip" 暗示了这是一个包含与文件重命名操作相关的 Python 源码的压缩包。从描述中我们得知,这是一份 Python 学习笔记,作者可能是为了分享自己的学习成果或者实践经验。标签 "python笔记源码" ...

    Linux中用rename命令批量替换文件名方法实例

    在Linux系统中修改文件名可以用mv命令,但是它只能对单个文件进行操作,如要要批量执行还要写shell脚本,用for语句迭代执行,不过Linux中另外一个命令支持批量替换文件名,它是rename,rename支持正则表达式匹配。...

    Batch File Rename(批量重命名工具)V0.6.3906.19827免费版

    Batch File Rename Utility是一个易于使用的文件和批量重命名工具。提供灵活的选择配置的规则,可以组合和堆叠。Batch File Rename允许你替换字符,删除/添加号码,删除/添加文本,变更,分裂名称等等。该计划提供了...

    FILE_fopen_rename_file_

    在分析"FILE.cpp"的源代码时,可能会看到如何将这些函数组合在一起实现特定功能,例如读取文件内容,处理字符串,然后根据需要重命名文件。这种综合运用可以提升我们的编程技能,理解不同函数之间的协同工作。 总的...

    Delphi RenameFile修改文件名范例.rar

    本例中修改文件名使用Delphi中自带函数RenameFile来实现,具体用法可参考下述代码:  Try  RenameFile(Edit1.Text,Edit2.Text);  SHowMessage('更改成功');  except  ShowMessage('更改失败');  end;

    Python_OS模块

    os.rename(file, back) # ...and temporary to original os.rename(temp, file) # 试用 file = "c:\samples\sample.txt" replace(file, "hello", "tjena") # search for the string 'hello' and replace with ...

Global site tag (gtag.js) - Google Analytics