我正在尝试将给定目录中的所有文件重命名为大写。它完成了整件事,但在文件夹中没有做任何事情文件名仍然相同。
import java.io.File;
import java.io.IOException;
public class FileOps {
public static void main(String[] argv) throws IOException {
File folder = new File(
"C:\\Users\\N\\Desktop\\New folder\\RenamingFiles\\src\\renaming\\Files");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
File f = new File(
"C:\\Users\\N\\Desktop\\New folder\\RenamingFiles\\src\\renaming\\Files"
+ listOfFiles[i].getName());
f.renameTo(new File(
"C:\\Users\\N\\Desktop\\New folder\\RenamingFiles\\src\\renaming\\Files"
+ listOfFiles[i].getName().toUpperCase()
+ ".txt"));
}
}
System.out.println("Done");
}
}
它在控制台中打印“Done”,但实际上什么都没做
正如ortis所指出的,您在命名文件时错过了添加“\”。
f.renameTo(new File(
"C:\\Users\\N\\Desktop\\New folder\\RenamingFiles\\src\\renaming\\Files"
+ listOfFiles[i].getName().toUpperCase()
+ ".txt"));
一遍又一遍地执行此代码将导致将. txt添加到文件名中。您可以考虑使用apache FileUtils来获取扩展。
对代码进行这些更改,
File folder = new File("/home/ubuntu/Desktop/pics");
File[] listOfFiles = folder.listFiles();
for(File file : listOfFiles){
if(file.isFile()){
String fileName = FilenameUtils.removeExtension(file.getName()).toUpperCase() ;
String newPath = folder + File.separator + fileName+ "."+ FilenameUtils.getExtension(file.getName());
file.renameTo(new File(newPath));
}
}
您可以使用以下内容来检查发生了什么。一些小改动包括使用文件(父,名称)表单,以避免必须确定和添加操作系统特定的文件路径分隔符。
package com.example.renaming;
import java.io.File;
import java.io.IOException;
public class TestRename {
private static final String[] defaultArgs = { "C:\\Users\\N\\Desktop\\New folder\\RenamingFiles\\src\\renaming\\Files" };
private static TestRename me;
private static String[] arguments;
public static void main(String[] args) {
me = new TestRename();
if (args == null | args.length == 0) {
arguments = defaultArgs;
} else {
arguments = args;
}
me.doWork(arguments);
}
private void doWork(String[] arguments) {
int numFiles = 0;
File folder = new File(arguments[0]);
try {
System.out.println("Working on " + folder.getCanonicalPath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File[] fileList = folder.listFiles();
if (fileList == null) {
System.out.println("No files fould");
} else {
for (int i = 0; i < fileList.length; i++) {
System.out.println("File " + fileList[i].getName());
if (fileList[i].isFile()) {
numFiles++;
try {
String currentName = fileList[i].getName();
File parent = fileList[i].getParentFile();
String newName = currentName.toUpperCase() + ".txt";
System.out.println(" .. current = " + currentName);
System.out.println(" .. newname = " + newName);
// Avoids having to get the file path separator for an OS
File newFile = new File(parent, newName);
System.out.println(" .. new File = "
+ newFile.getCanonicalPath());
fileList[i].renameTo(newFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println("Done, found " + numFiles);
}
}
}
在您的if
语句中,您忘记添加结尾分隔符:
if (listOfFiles[i].isFile()) {
File f = new File(
"C:\\Users\\N\\Desktop\\New folder\\RenamingFiles\\src\\renaming\\Files\\"// <- Missing separator
+ listOfFiles[i].getName());
f.renameTo(new File(
"C:\\Users\\N\\Desktop\\New folder\\RenamingFiles\\src\\renaming\\Files\\"// <- Missing separator
+ listOfFiles[i].getName().toUpperCase()
+ ".txt"));
}
适当的实施方式是:
if (listOfFiles[i].isFile())
listOfFiles[i].renameTo(new File(folder, listOfFiles[i].getName().toUpperCase()+ ".txt"));//not sure why this .txt
小心,重命名为方法高度依赖于平台。阅读Javadoc
问题内容: 我有这样的事情: 我想将这些文件重命名为以下形式: 在同一目录中。 我想我可以使用,但是我不知道如何在文件夹和文件重命名的同时使用它。 问题答案: 可以使用bash for loop和: 请注意,如果目录名称包含空格,则上述解决方案将不起作用。相关链接。 另一种基于注释的解决方案(也适用于名称中也包含空格的目录):
问题内容: 有没有一种简单的方法可以使用Python重命名目录中已包含的一组文件? 示例: 我有一个充满* .doc文件的目录,我想以一致的方式重命名它们。 X.doc->“ new(X).doc” Y.doc->“ new(Y).doc” 问题答案: 这样的重命名非常容易,例如使用os和glob模块: 然后可以在示例中使用它,如下所示: 上面的示例会将dir中的所有文件都转换为,其中是文件的先前
前面小节介绍了文件和目录的创建、移动、删除、打包、压缩,本小节介绍如何对已有的文件或者重命名,好的文件命名规范将提升对文件和目录管理的效率。 1. 使用 mv 命令对文件名称 这里还是以 /home 目录的 alltxt.tar 文件为例,可以使用 mv 命令对其重命名: ls mv alltxt.tar newtxt.tar ls 执行结果如下图: 如上图所示相当于文件移动路径没变,名称变
问题内容: 我正在尝试使用Python重命名目录中的某些文件。 假设我有一个名为的文件,并且想要删除,所以我得到的文件名将是 我正在尝试使用,但无法正常工作。我也考虑过使用字符串操作,但也没有成功。 问题答案: 使用重命名或移动文件或目录。
我正在解决一个问题,其中一些方法没有被识别。我觉得发布整个代码是没有必要的,所以我为这些特定的方法创建了一个程序。他们仍然没有被认出。 就我所能想象的,这可能是我的vs代码的一个问题。该代码在其他目录中运行良好。有什么建议吗? Java版本:Java 18.0.1.1 我已尝试清理工作区,但问题仍然存在于目录中。
我一直在使用PDF文件中的命名目标来打开文件中特定位置的PDF文件。负责生成PDF文档的团队使用工具从图书标记自动生成命名目的地,因此命名目的地的名称往往类似于*9\u Glossary*或*Additional\u Information*。我们被要求用多种语言制作相同的文档。我预计我们将收到多种外语的PDF文档,在相同的位置带有书签,但图书标记的名称当然将使用这些其他语言,自动生成的命名目的地