Java:为什么这样重命名不行呢?费解

importjava.io.File;publicclassTest{publicstaticvoidmain(String[]args){Filefile=newFil... import java.io.File;

public class Test {
public static void main(String[] args) {
File file = new File("E://test.log");
rename(file);
}

private static void rename(File file) {
if (file.exists()) {
String demo=file.getName()+"_delete";
file.renameTo(new File(demo));
}
}
}

想把test.log文件重命名为test.log_delete,为什么一运行就直接将文件删除了呢?为什么会这样呢?费解......
卧槽

知道了...getName只会获得文件名,不会获得前面的路径...
展开
 我来答
YouU6615
2014-01-20 · TA获得超过149个赞
知道答主
回答量:37
采纳率:100%
帮助的人:34.3万
展开全部
1.权限问题,打开不存在;2.没有被删除,看看file.renameTo(new File(demo));返回是否为true,如果为true,则表示文件被重命名到一个你找不到的地方了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-20
展开全部
此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作不是不可分的,如果已经存在具有目标抽象路径名的文件,那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
artintin
2014-01-20 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2896万
展开全部
不是被删除了,而是String demo=file.getName()+"_delete";
demo=test.log_delete,没有e:\\
不是删除了文件,而是将文件改名并搬动到当前目录了,你检查一下Test .java的当前目录就知道了。
修改的话你试试String demo=file.getAbsolutePath()+"_delete";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ElcDancer
2014-01-20
知道答主
回答量:16
采纳率:0%
帮助的人:20万
展开全部
你可以这样,在if语句里打印一下这个demo的值,我试了下照你的写法输出值是test.log_delete。因为getName是不带路径的,你可以在字符串中加上路径就可以得到正确结果了:String demo = "E://"+file.getName() +"_delete",测试成功
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenguang5092
2014-01-20 · TA获得超过664个赞
知道小有建树答主
回答量:520
采纳率:50%
帮助的人:458万
展开全部

renameTo(stirng file)

过程复制原文件至指定位置并命名,之后删除原文件

你这里的文件操作后,原文件删除,新文件位置在工作空间,不在E盘

	if (file.exists()) {
String demo=file.getName()+"_delete";
String path = file.getAbsolutePath();
file.renameTo(new File(file.getAbsolutePath().substring(0, path.lastIndexOf("\\"))+demo));
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式