黑马程序员技术交流社区
标题:
为什么用renameTo()方法重命名文件名会失败? 求解
[打印本页]
作者:
zhangyiling5
时间:
2016-9-30 13:20
标题:
为什么用renameTo()方法重命名文件名会失败? 求解
本帖最后由 zhangyiling5 于 2016-9-30 13:22 编辑
public class Test {
/**
* 编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中
* 拷贝成功后,把后缀名是.java的改成.txt。
*/
public static void main(String[] args) throws IOException {
File f = new File("E:\\aaa\\");
File[]arr = f.listFiles();
FileInputStream fi = null;
FileOutputStream fo = null;
for (File file : arr) {
//System.out.println(file.getName());
//System.out.println(file.getPath());
if(file.isFile() && file.getName().endsWith(".java")){
fi = new FileInputStream(new File(file.getPath()));
fo = new FileOutputStream(new File("C:\\Users\\UPA\\Desktop\\a\\"+
file.getName()));
int a;
byte []arr1 = new byte [1024];
while((a = fi.read(arr1)) != -1){
fo.write(arr1, 0, a);
}
}
}
fi.close();
fo.close();
File fi1 = new File("C:\\Users\\UPA\\Desktop\\a\\");
File[]arr1 = fi1.listFiles();
File fs = null;
for (File file2 : arr1) {
System.out.println(file2);
String ds = file2.getName().replace(".java", ".txt");
fs = new File(fi1,ds);
//重命名了一个文件,其他的全部false???
boolean r = file2.renameTo(fs);
System.out.println(r);
}
}
}
应该所有文件都会改为txt格式的,可是事与愿违了...
作者:
寒冰夜
时间:
2016-9-30 14:04
也不大懂..怎么办 哎
作者:
zhangyiling5
时间:
2016-9-30 14:13
寒冰夜 发表于 2016-9-30 14:04
也不大懂..怎么办 哎
完全懵逼..
作者:
胡小胡小胡
时间:
2016-9-30 22:21
package Lianxi24;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Test_IO {
// 输入一个路径,将该路径下(包括子文件夹)所有以.java结尾的文件复制到别的路径之后再改名为.txt
// 键盘录入一个路径,判断录入的路径是否正确
// 定义一个递归的方法
// 将录入的路径封装成file数组
// 遍历数组,判断是文件路径还是文件夹路径
// 如果是文件路径就读写到别的文件夹中
// 如果是文件夹路径就递归调用
public static void main(String[] args) throws IOException {
File src = getFile();
File dest = getFile();
if (!src.equals(dest)) {
diGui(src, dest);
} else {
System.out.println("录入了相同的文件名");
}
}
public static File getFile() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件路径:");
while (true) {
String line = sc.nextLine();
File file = new File(line);
if (!file.exists()) {
System.out.println("输入的文件路径不存在,请重新输入:");
} else if (file.isFile()) {
System.out.println("输入的是文件夹路径请重新输入:");
} else {
return file;
}
}
}
public static void diGui(File src, File dest) throws IOException {
File newSrc = new File(dest, src.getName());// 在目标文件中创建与原文件相同的文件
newSrc.mkdir();
File[] sArr = src.listFiles(); // 将原文件封装成file数组
for (File file : sArr) { // 遍历数组,获取到每一个文件
if (file.isFile() && file.getName().endsWith(".java")) { // 判断是否是文件并以.java结尾的
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(newSrc, file.getName().replaceAll(".java", ".txt"))));
int b;
while ((b = bis.read()) != -1);
{
bos.write(b);
}
bis.close();
bos.close();
} else if (file.isDirectory()) {
diGui(file, newSrc);
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2