关于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这个函数是可以实现将文件重命名和文件移动的功能的。
关于Java中File的renameTo函数的更多相关文章
- java中File类的常用方法总结
java中File类的常用方法 创建: createNewFile()在指定的路径创建一个空文件,成功返回true,如果已经存在就不创建,然后返回false. mkdir() 在指定的位置创建一个此抽 ...
- python 中的sort 和java中的Collections.sort()函数的使用
x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...
- Java 中File类的createNewFile()与createTempFile(), delete和deleteOnExit区别
1. Java 中File类的createNewFile()与createTempFile()的区别 最近,在看代码时看到了一个方法, File.createTempFile() ,由此联想到File ...
- JAVA中的内联函数
在说内联函数之前,先说说函数的调用过程. 调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到 转去执行该函数前的地方.这种转移操作要求在转去前要保护 ...
- java中File的delete()方法删除文件失败的原因
java中File的delete()方法删除文件失败的原因 学习了:http://hujinfan.iteye.com/blog/1266387 的确是忘记关闭了: 引用原文膜拜一下: 一般来说 ja ...
- Java中的lambda匿名函数使用
Java中的lambda匿名函数使用 lambda匿名函数的使用是为了满足某些情况下需要临时定义函数,或者事先定义,需要时才使用.在python里面,lambda表达式的表达方式为:lambda 参数 ...
- java中File类的常用所有方法及其应用
创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false.mkdir() 在指定位置创建一个单级文件夹.mkdirs() 在指定位置 ...
- Java中File常用的方法汇总
创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false.mkdir() 在指定位置创建一个单级文件夹.mkdirs() 在指定位置创建 ...
- 【转】Java中File常用的方法汇总
创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false.mkdir() 在指定位置创建一个单级文件夹.mkdirs() 在指定位置创建 ...
随机推荐
- jquery日期格式化
function dateFormat(date, format){ date = , ) / ), ) { v = ); } ...
- hdu 1556 树状数组+点查询
树状数组 N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一 ...
- ANSYS:Negative pivot encountered
做柔性体仿真,从ANSYS导入模态中性文件时有这个报错. Negative pivot encountered. This is likely caused by insufficient disp ...
- SplendidCRM 如何添加及使用中文语言包
SplendidCRM 功能很强大,也支持多国语言,但关于中文语言安装的介绍在网上一直都找到,自已摸索了一下,成功使SplendidCRM应用中文,以下是安装方法. 版本号:SplendidCRM 7 ...
- mysql数据库之基础SQL语句/语法
SQL是现在进入互联网工作人们的必须技能之一,下面分享自己觉得很nice的SQL基本语句,从网上找了,觉得很不错,就分享给大家!简要介绍基础语句: 1.说明:创建数据库 Create DATABAS ...
- BZOJ3886 : [Usaco2015 Jan]Moovie Mooving
f[i]表示用i集合内的电影可以达到的最长时间 f[i]向f[i|(1<<j)]更新,此时的时间为第j部电影在f[i]前的最晚上映时间 先排序一遍离散化后用前缀最大值解决 时间复杂度$O( ...
- android sdk 安装排错
如果你遇到了消息为“Failed to fetch URL…” 的错误提示,那么你需要将HTTPS方式改为HTTP方式,方法如下: 碰到这样错误,请按下边的操作. 1)在菜单选择Tools—Optio ...
- Android使用AsyncTask实现可以断点续传的DownloadManager功能
http://www.it165.net/pro/html/201211/4210.html 最近做项目卡壳了,要做个Android的应用市场,其他方面都还好说,唯独这个下载管理算是给我难住了,究其原 ...
- MySQL 用户管理——权限表
权限表 权限表存放在mysql数据库中 user表结构 用户列:Host.User.Password 权限列:*priv 资源控制列:max* 安全列:其余 db表 存储了用户对某个数据库的操作权 ...
- currentRowChanged 的注意事项
Qt中的表单控件QListWidget类提供了许多信号函数,可以和用户交互,其中有个currentRowChanged ( int currentRow ) 是检测当前选中行是否发生了改变,如果改变了 ...