我一直在尝试创建一个程序,将几个.mp4文件重命名为它所在文件夹的名称。程序有时会在一些文件上运行,但最终会抛出空指针异常
我尝试了多种不同的方法,但似乎没有一种方法正常工作,我对Windows 7相关的java不是很熟悉。
有人能看到问题吗?欢呼声。
public static void main (String []args) throws InterruptedException
{
String dir = "D:\\New folder";
File directory = new File(dir);
File[] files = directory.listFiles();
File tempd;
File[] tempf;
String temps;
int filecount = 0;
for (int index = 0; index < files.length; index++)
{
temps = files[index].toString();
tempd = new File(temps);
tempf = tempd.listFiles();
for (int i = 0; i < tempf.length; i++)
{
String[] tempsRel = temps.split("\\\\");
if (tempf[i].toString().endsWith("mp4"))
{
boolean success = tempf[i].renameTo(new File(dir + "\\" + tempsRel[tempsRel.length-1] + ".mp4"));
if (success)
{
System.out.println("RENAMED FILE ==> " + tempsRel[tempsRel.length-1] + ".mp4");
}}}}
System.exit(0);
}
答案 0 :(得分:0)
听起来你在新文件夹中有一些文件
tempf = tempd.listFiles();
如果您在新文件夹中有文件,则此行将返回null 在列出
中的文件之前检查tempd是否为目录 tempd = new File(temps);
if (tempd.isDirectory()) {
your code
}
答案 1 :(得分:0)
这将重命名目录中的所有文件
import java.io.File;
import java.util.Scanner;
public class RENAME {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter folder name ");
File old = new File(s.nextLine());
for(File f :old.listFiles()){
if(f.isFile())
{
f.renameTo(new File(f+".png"));
}
}
}
}
}