JAVA 用renameTo()改名后,getName()输出的还是以前的名字,这是为什么?
展开全部
之前也有过做过类似的例子,望采纳
package my.file;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class TravelAllFile {
public static void main(String[] args) {
String path = "E:/文件夹";
File f = new File(path);
if (f.isDirectory()) {
new TravelAllFile().getFileName(f);
}
delFolder("E:/文件夹");
System.out.println("deleted");
}
// 递归查找函数,参数为file对象
public void getFileName(File f) {
// File 数组
File[] files = f.listFiles();
for (int i = 0; i < files.length; i++) {
// 递归出子目录
if (files[i].isDirectory()) {
System.out.println("子目录是:" + files[i].getName());
getFileName(files[i]);
// 递归出子文件
} else {
System.out.println(files[i].getName());
}
}
}
//重命名
public void rename(){
File fl=new File("E://文件夹"); // 这里写上发替换的文件夹路径,注意使用双斜杠
String[] files=fl.list();
File f=null;
String filename="";
for(String file:files)
{
f=new File(fl,file);// 注意,这里一定要写成File(fl,file)如果写成File(file)是行不通的,一定要全路径
filename=f.getName();
// System.out.println(filename);
f.renameTo(new File(fl.getAbsolutePath()+"//"+filename.replace("要替换掉的内容", "替换成的内容")));// 这里可以反复使用replace替换,当然也可以使用正则表达式来替换了
}
}
//删除文件夹
//param folderPath 文件夹完整绝对路径
public static void delFolder(String folderPath) {
try {
delAllFile(folderPath); //删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); //删除空文件夹
} catch (Exception e) {
e.printStackTrace();
}
}
//删除指定文件夹下所有文件
//param path 文件夹完整绝对路径
public static boolean delAllFile(String path) {
boolean flag = false;
File file = new File(path);
if (!file.exists()) {
return flag;
}
if (!file.isDirectory()) {
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);//再删除空文件夹
flag = true;
}
}
return flag;
}
/**
* 创建目录
* @param dirPath
*/
static Boolean createDir(String dirPath){
File dirFile = new File(dirPath);
return dirFile.mkdirs();
}
/**
* 创建文件
* @param filePath
* @param content
* @return Boolean
*/
static Boolean createFile(String filePath,String content){
Writer writer = null;
File file = new File(filePath);
File temp = new File(file.getParent());
if(!temp.exists()){
createDir(file.getParent());
}
try{
writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write( content );
}catch(Exception e){
e.printStackTrace();
return false;
}finally{
try{
if(writer!=null){
writer.close();
}
}catch(Exception e1){
e1.printStackTrace();
}
}
return true;
}
}
package my.file;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class TravelAllFile {
public static void main(String[] args) {
String path = "E:/文件夹";
File f = new File(path);
if (f.isDirectory()) {
new TravelAllFile().getFileName(f);
}
delFolder("E:/文件夹");
System.out.println("deleted");
}
// 递归查找函数,参数为file对象
public void getFileName(File f) {
// File 数组
File[] files = f.listFiles();
for (int i = 0; i < files.length; i++) {
// 递归出子目录
if (files[i].isDirectory()) {
System.out.println("子目录是:" + files[i].getName());
getFileName(files[i]);
// 递归出子文件
} else {
System.out.println(files[i].getName());
}
}
}
//重命名
public void rename(){
File fl=new File("E://文件夹"); // 这里写上发替换的文件夹路径,注意使用双斜杠
String[] files=fl.list();
File f=null;
String filename="";
for(String file:files)
{
f=new File(fl,file);// 注意,这里一定要写成File(fl,file)如果写成File(file)是行不通的,一定要全路径
filename=f.getName();
// System.out.println(filename);
f.renameTo(new File(fl.getAbsolutePath()+"//"+filename.replace("要替换掉的内容", "替换成的内容")));// 这里可以反复使用replace替换,当然也可以使用正则表达式来替换了
}
}
//删除文件夹
//param folderPath 文件夹完整绝对路径
public static void delFolder(String folderPath) {
try {
delAllFile(folderPath); //删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); //删除空文件夹
} catch (Exception e) {
e.printStackTrace();
}
}
//删除指定文件夹下所有文件
//param path 文件夹完整绝对路径
public static boolean delAllFile(String path) {
boolean flag = false;
File file = new File(path);
if (!file.exists()) {
return flag;
}
if (!file.isDirectory()) {
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);//再删除空文件夹
flag = true;
}
}
return flag;
}
/**
* 创建目录
* @param dirPath
*/
static Boolean createDir(String dirPath){
File dirFile = new File(dirPath);
return dirFile.mkdirs();
}
/**
* 创建文件
* @param filePath
* @param content
* @return Boolean
*/
static Boolean createFile(String filePath,String content){
Writer writer = null;
File file = new File(filePath);
File temp = new File(file.getParent());
if(!temp.exists()){
createDir(file.getParent());
}
try{
writer = new OutputStreamWriter(new FileOutputStream(file));
writer.write( content );
}catch(Exception e){
e.printStackTrace();
return false;
}finally{
try{
if(writer!=null){
writer.close();
}
}catch(Exception e1){
e1.printStackTrace();
}
}
return true;
}
}
更多追问追答
追问
有没有办法该file.getName()获取的名字?
改
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询