我可以列出目录下所有文件的文件名,就是没办法改,请帮帮我把~~~
import java.io.*;
import java.io.*;
public class FileRename
{
private File dir;
private String absolute;
public FileRename(File dir) throws Exception
{
if(dir.isDirectory()) //判断是否是个目录,是目录返回true
{
this.dir = dir; //将目录赋值给变量
absolute=dir.getAbsolutePath(); //绝对路径名字符串存放到变量
}
else
{
throw new Exception( "err dir "); //不是目录就抛出异常
}
}
public void Rename(String filename,int increment)
{
int i = 0 ;
String temp[] = dir.list(); //将路径字符串化存放到字符串数组中
for(String s : temp) //这个是啥意思??不懂可以解释下吗??
{
File f = new File(absolute+File.pathSeparator+ "s "); //这个 "s "有什么作用??
System.out.println(f.isFile());
if(f.isFile()) //错误主要是这个每次都返回false
{
f.renameTo(new File(absolute+File.pathSeparator+filename+String.valueOf(i))); // "; "对目录有什么作用??
i = i+ increment;
}
}
}
public static void main(String args[]) throws Exception
{
File f1=new File( "E:\\java\\JavaApplication8\\jpg ");
FileRename fr = new FileRename(f1);
fr.Rename( "debug.exe ",1);
}
}
------解决方案--------------------
for(String s : temp)
// 这个是5.0中新增加的for in循环,temp是一个数组或List,String s是temp数组存放的数据类型,这个for的作用就和
for(int i=0; i <temp.length; i++) {
String s = temp[i];
}
的作用一致。
File f = new File(absolute+File.pathSeparator+ "s ");
// 把 s 的两个引号去掉,这里的 s 就是在上面 for 循环中的文件名。
不过我发现这样改文件的方法,好像连文件后缀都没有了。
------解决方案--------------------
你的错误主要有2点:
第一点:你自己也看到了,你不明白那个 "s "是什么,其实那个s是一个字符串变量,代表了文件名,不应该加引号的,把引号去掉就对了。
第二点:你用到了File.pathSeparator,很遗憾,这东西不是文件分隔符,他在windows系统中代表了 '; '这一字符,因此下面的判断总是false。正确的用法是File.separator,这个在windows中才是 '\\ '。
修正这2点后,程序就能够正常运行了。