我正在尝试重命名存储中两种类型文件的扩展名。第一种类型是" .mp3",我想将其重命名为" .xmp3" ,第二种类型是" .mp4"到" .xmp4" 。我可以使用此方法删除文件,但如何修改它以重命名文件?感谢
public void walkdir(File dir) {
String Patternjpg = ".mp4";
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
walkdir(listFile[i]);
} else {
if (listFile[i].getName().endsWith(Patternjpg)) {
// Do what ever u want
listFile[i].delete();
}
}
}
}
答案 0 :(得分:2)
public void walkdir(File dir) {
String Patternjpg = ".mp4";
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
walkdir(listFile[i]);
} else {
String name = listFile[i].getName();
if (name.endsWith("mp4") || name.endsWith("mp3")) {
// Do what ever u want
String fileName = listFile[i].getAbsolutePath();
int indexOfDot = fileName.indexOf(".");
StringBuilder newFileName = new StringBuilder(fileName);
newFileName.insert(indexOfDot + 1, "x");
listFile[i].renameTo(new File(newFileName.toString()));
}
}
}
}
}
这可能工作我还没有测试过,renameTo方法肯定有效,但是生成新文件名并不需要测试,只需测试新文件字符串是否是你想要的字符串
修改强>
第二次查询
但你可以告诉我而不是重命名扩展,我怎么简单地添加 a&#34;。&#34;例如,在文件名之前,miller.jpg - &gt; .miller.jpg我 如果你帮忙,我会投票
首先执行String fileName = listFile[i].getName();
,它应该为您提供名称,然后执行String fullPath = listFile[i].getAbsolutePath();
以获取完整路径,然后执行int indexOfFileNameStart = fullPath.lastIndexOf(fileName)
,然后从中获取字符串生成器实例fullPath就像这样StringBuilder sb = new StringBuilder(fullPath);
,现在你在sb sb.insert(indexOfFileNameStart, ".")
上调用insert方法,现在sb应该有你想要的字符串,只需将它构造成字符串sb.toString()
我在代码
中添加此内容private String putDotBeforeFileName(File file) {
String fileName = file.getName();
String fullPath = file.getAbsolutePath();
int indexOfFileNameStart = fullPath.lastIndexOf(fileName);
StringBuilder sb = new StringBuilder(fullPath);
sb.insert(indexOfFileNameStart, ".");
String myRequiredFileName = sb.toString();
file.renameTo(new File(myRequiredFileName));
return myRequiredFileName;
}
如果您为此发布了一个单独的问题,我更愿意,因为这个问题与此答案无关
答案 1 :(得分:1)
只需使用文件的renameTo
方法重命名以目标扩展名结尾的文件。
您可以通过定义方法需要在'x'
之前添加的一组扩展来一般地考虑任何扩展类型。
例如,下面的方法对已定义的扩展进行了一系列替换,然后重命名该文件:
public static final String[] TARGET_EXTENSIONS = { "mp4", "mp3", "mp55", "other" };
public void walkdir(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
walkdir(listFile[i]);
} else {
String fPath = listFile[i].getPath();
for (String ext : TARGET_EXTENSIONS) {
fPath = fPath.replace("." + ext, ".x" + ext)
}
listFile[i].renameTo(new File(fPath));
}
}
}
}