关于Java中File的renameTo函数


先看Java编程实战经典中的一道习题:

编写程序,程序运行时输入目录名称,并把该目录下的所有文件名后缀修改成.txt。

按照题意,我在d盘新建了文件夹test,并在该文件夹下新建了一个文件file.d。接着我写了如下程序

import java.io.File;
import java.util.Scanner;

public class Ex09 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		Scanner scan = new Scanner(System.in);
//		String dirname = scan.nextLine();
//		scan.close();
		String dirname = null;
		dirname = "d:"+File.separator+"test";
		File f = new File(dirname);
		if (f.isDirectory()) {
			File[] fileList = f.listFiles();
			for (File file : fileList) {
				if (file.isFile()) {
					String suffix = 
							file.getName().substring(
							file.getName().lastIndexOf('.')+1);
					if (false == "txt".equals(suffix)) {
						String destName = file.getName().substring(
								0,file.getName().lastIndexOf('.'));
						File dest = new File(destName+".txt");
						file.renameTo(dest);
					}
				}
			}
		}
	}

}

经检查,程序没有什么问题,但是文件后缀并没有被修改。

后来检查才发现 

File dest = new File(destName+".txt");  这样写虽然不会报错,但是不能表示文件的具体存储位置,需要指明文件的绝对地址才行,

改成如下代码后问题解决。

import java.io.File;
import java.util.Scanner;

public class Ex09 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		Scanner scan = new Scanner(System.in);
//		String dirname = scan.nextLine();
//		scan.close();
		String dirname = null;
		dirname = "d:"+File.separator+"test";
		File f = new File(dirname);
		if (f.isDirectory()) {
			File[] fileList = f.listFiles();
			for (File file : fileList) {
				if (file.isFile()) {
					String suffix = file.getName().substring(
							file.getName().lastIndexOf('.')+1);
					if (false == "txt".equals(suffix)) {
						String s = file.getParent();
						String destName = file.getName().substring(
								0,file.getName().lastIndexOf('.'));
						File dest = new File(s+file.separator+destName+".txt");
						
						file.renameTo(dest);	
					}
				}
			}
		}
	}

}

可以看出, renameTo这个函数是可以实现将文件重命名和文件移动的功能的。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM