在Windows上将多个文件重命名为文件夹名称

时间:2013-04-14 09:15:35

标签: java windows file nullpointerexception renaming

我一直在尝试创建一个程序,将几个.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);
}

2 个答案:

答案 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"));

      }
   }
  }
 }
}