黑马程序员技术交流社区
标题:
自己写的改文件名的小程序有问题
[打印本页]
作者:
王春晓
时间:
2013-5-16 17:06
标题:
自己写的改文件名的小程序有问题
本帖最后由 王春晓 于 2013-5-16 18:36 编辑
自己写了一个可以修改某个文件夹下的指定类型的文件名的小程序,调试打印的结果没问题,但是为什么执行完没有效果呢?
package cr.victor;
import java.io.File;
import java.io.FilenameFilter;
/*
* 需求:将一个文件目录下的文件名进行修改
*
* 步骤:
* 1、将目录对象传入
* 2、判断传入的是否是目录,对该目录进行取出操作,如果其中仍是目录,则递归取出,直到拿到其中的文件名
* 3、根据文件名判断是否是需要修改的类型
* 4、用renameTo方法改名
*/
public class RenameFile {
public static void main(String[] args){
File fdir = new File("E:\\learn");
dir(fdir);
}
//传入一个目录,通过递归取出其中的所有文件
public static void dir(File fdir){
if(!fdir.isDirectory() || fdir==null)//判断传入的是否是合法目录
throw new RuntimeException("指定目录不存在");
else{
File[] files = fdir.listFiles();//将目录中的文件或文件夹存入File[]中
for(File file : files){
if(file.isDirectory())//如果目录中还是目录,继续递归
dir(file);
else
rename(file);//调用改名方法
}
}
}
//改名方法,用renameTo()将一个文件对象改名
public static void rename(File file){
//判断要改名的文件类型
if(file.getName().endsWith(".avi")){
File fname = new File(file.getParent()+file.getName());//原来的文件路径和文件名
File newname = new File(file.getParent()+"\\"+"A"+file.getName());//要更改的路径和文件名
fname.renameTo(newname);
System.out.println(file.getParent() + "\\" + "A" + file.getName());//调试打印更改后的结果
}
}
}
复制代码
作者:
薛淑凯
时间:
2013-5-16 18:17
本帖最后由 薛淑凯 于 2013-5-16 18:21 编辑
占楼、、、看程序
测试了下这段代码
public static void rename(File file){
//判断要改名的文件类型
if(file.getName().endsWith(".avi")){
File fname = new File(file.getParent()+
"\\"
+file.getName());//原来的文件路径和文件名
File newname = new File(file.getParent()+"\\"+"A"+file.getName());//要更改的路径和文件名
System.out.println(fname.renameTo(newname));
//打印了一下结果发现是false,然后看了看传进去的路径有问题,上边少了\\,然后重命名成功
System.out.println(file.getParent() + "\\" + "A" + file.getName());//调试打印更改后的结果
}
作者:
王春晓
时间:
2013-5-16 18:36
薛淑凯 发表于 2013-5-16 18:17
占楼、、、看程序
测试了下这段代码
public static void rename(File file){
啊。。晕死了,只改了下面上面没注意
作者:
kaka小明
时间:
2013-5-16 18:45
这位仁兄,通过测试,rename类的newname 和入参file不一样,直接重命名file就OK了,一下是更改后的测试代码:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedTest {
/**
* @param args
*/
public static void main(String[] args){
File fdir = new File("D:\\11java");
dir(fdir);
}
//传入一个目录,通过迭代取出其中的所有文件
public static void dir(File fdir){
if(!fdir.isDirectory() || fdir==null)//判断传入的是否是合法目录
throw new RuntimeException("指定目录不存在");
else{
File[] files = fdir.listFiles();//将目录中的文件或文件夹存入File[]中
for(File file : files){
if(file.isDirectory())//如果目录中还是目录,继续迭代
dir(file);
else
rename(file);//调用改名方法
}
}
}
//改名方法,用renameTo()将一个文件对象改名
public static void rename(File file){
//判断要改名的文件类型
if(file.getName().endsWith(".java")){
File fname = new File(file.getParent()+file.getName());//原来的文件路径和文件名
File newname = new File(file.getParent()+"\\"+"A"+file.getName());//要更改的路径和文件名
file.renameTo(newname);//直接通过重命名file
//if(fname.equals(file))//该条件打印结果也是“文件不同”
if(fname==file){//引用地址不一样,也就是操作对象不一样
System.out.println("文件相同");
}else{
System.out.println("文件不同");//打印结果
}
System.out.println(file.getParent() + "\\" + "A" + file.getName());//调试打印更改后的结果
// }
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2