- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有很多关于 RenameTo 的帖子,但不幸的是,这些帖子似乎都不是我的问题或回答它:'(
我的问题是:我给我的程序一个文件,然后它应该加密它,计算加密文件的哈希值,并用这个哈希值重命名这个加密文件。为此,我首先创建名为“tmp”的加密文件,然后计算他的名字(在下面的代码中调用“myfile.setFileID()”),然后使用 RenameTo 对其进行重命名。
加密效果很好,哈希函数也很好(毫无疑问,在尝试实现它之前我使用了两者一段时间)。事实上,一切都运行良好......除了有时重命名失败。我不知道为什么。
这是我使用 RenameTo 的代码部分:
//encrypt file:
File tmpEncryptedFile = Crypt.encrypt(originalFile, aesKey);
//set File ID and rename file:
myfile.setFileID(tmpEncryptedFile);
File encryptedFile = new File(myfile.getFileID());
if(!tmpEncryptedFile.renameTo(encryptedFile)) {
System.err.println("unable to rename file. Upload failed. Please try again.");
}
有时它工作得很好,有时我得到“无法重命名文件”。每次,tmp 文件都会正确创建,因此看起来确实来自 renameTo。另外,我现在已经运行了很多测试,它可能会失败或使用相同的文件输入(哦,除了即使对于相同的输入文件,加密的文件也不会相同,因为 key 是随机的.. .所以是的,RenameTo 的输入不一样,但我的意思是这不是“文件未找到”问题或来 self 的程序其他部分的问题)。
例如,我可以运行该程序多次,每次都给它相同的文件,第一次两次失败,第三次运行良好。或者我可以运行它 10 次,第 9 次运行良好,最后一次失败。由于失败似乎是随机的,我无法理解这里不起作用。
我读到我可能可以使用 Files.move() 代替,但对我来说使用 RenameTo() 似乎更“合乎逻辑”,我想了解这里出了什么问题。另外,Files.move() 使用路径,我只想在我的项目目录中完成它,这样文件名对我来说就足够了。
最佳答案
假设您的新文件名是 Base64 编码的哈希值,我很确定在新文件名包含 /
的情况下,重命名
将会失败。当尝试将文件重命名为 "abc/def"
时,renameTo
会将 abc
部分解释为目录。由于此目录不存在,renameTo
将失败(它不会隐式创建它)。
关于java - RenameTo 似乎随机失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722941/
有很多关于 RenameTo 的帖子,但不幸的是,这些帖子似乎都不是我的问题或回答它:'( 我的问题是:我给我的程序一个文件,然后它应该加密它,计算加密文件的哈希值,并用这个哈希值重命名这个加密文件。
我需要通过将文件名中的 - 替换为 _ 来重命名文件。 假设文件名是ab-9.xml,它应该是ab_9.xml。 renameTo() 对我不起作用。还有其他方法可以做到这一点吗?这是我的代码: Fi
我尝试在 Java 中使用 renameTo 方法,但它只返回 false 并且不会移动文件。 我是不是少了一步?有没有办法找出为什么不移动文件? delete 方法也不执行任何操作。 这是我的代码,
Java 下面的代码是读取所有文件,并将数据发送到另一个方法(setOutput()),然后调用一个方法将最后读取的文件重命名到另一个目录,然后删除原始文件。在调用 smdrCleanup() 方法之
你能帮帮我吗? renameTo() 留下空的旧文件。所以我在文件系统中看到 2 个具有新名称和旧名称的文件。旧文件的大小为 0。如果我在重命名后删除旧文件,它会说该文件在文件系统中不存在。 目录的绝
我正在尝试通过 FTP 上传文件,但在上传之前必须将其重命名为 2 个 editText 的输入。为此,我使用以下代码: public FTPClient client = new FTPClient
我在媒体模块中运行了以下 Java 代码: File file = new File("/my/path/"+String.format("%02d", date)+"/"+streamAliasRe
我正在尝试重命名我的应用程序中的图像文件。但是代码不起作用。 基本上,我希望用户单击“重命名”按钮,弹出一个带有 editText 的警告对话框,用户输入图像的新名称,然后选择“重命名”选项。这应该重
我知道这个问题在这里可能已经被回答了一百万次,但我所看到的一切都没有帮助我。这是我的代码: for(File g: f.listFiles()){ for(File h : g.listFil
只是尝试使用 Java 重命名文件夹树的根目录。 使用 File.renameTo() 仅在 Windows 中有效,因为该文件夹根本没有任何内容。我似乎无法确定这是否是预期的行为。文档中似乎没有提到
File dir = new File(getFilesDir(), "dir1"); dir.renameTo(new File(getFilesDir(), "dir2"); Log.d("Num
我目前有一个文件监视器,它读取 XML 文件并根据内容更新数据库表。读取文件时,会根据特定模式对其进行验证,以确保内容正确。 验证的结果会影响要移动的文件的目的地。 如果架构成功,则将文件移动到已处理
import java.io.File; import org.apache.commons.io.FilenameUtils; public class Tester { public static
我有重命名文件然后立即尝试打开它的代码。 在 Windows XP 上,这有时(但很少)会抛出 FileNotFoundException。 renameTo 的返回值为真。 这是一个已知问题吗?也许
我有一个图片库应用程序,我尝试使用 renameTo() 方法重命名图像,但它无法更改文件名并返回 false。我读了很多关于重命名文件的问题,所有这些问题都建议只使用一种重命名文件的方法 - ren
这是我的代码,它非常简单: def dir = "C:\\Test" def folder = new File(dir) def files folder.setReadable(true) fol
我有 eclipse 插件 jface 应用程序。线程通过 BufferedWriter 写入文件。写入完成后,我关闭缓冲区,然后尝试重命名文件。 但有时文件没有重命名! 我尝试在几次重试之间添加一些
忽略我上一篇文章,我找到了问题的根源。我正在使用 a.renameTo(b) 当 b 不存在时。它不存在的原因是因为有一个符号链接(symbolic link)所以如果 b 是 /usr/name/f
我使用以下代码在 linux 上编辑文件 OIMV2Migration.sh。 String oldFileName = "OIMV2Migration.sh";//file to be ed
我希望能够重命名文件夹列表以删除不需要的字符(例如,点和双空格必须变成单个空格)。 单击 Gui 中的按钮后,您会看到一个消息框,其中显示了格式正确的名称,这表明格式正确且函数已被调用。当我查看我创建
我是一名优秀的程序员,十分优秀!