java文件删除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java文件删除相关的知识,希望对你有一定的参考价值。

public class Deletefile
public void deletefile(String filepathandname)
tryFile deletef=new File(filepathandname);//目标文件路径为参数创建file类对象
deletef.delete();//delete()方法,用于删除文件
catch(Exception e)
System.out.println("Delete Error!");
e.printStackTrace();


public static void main(String[] args)
Deletefile df=new Deletefile();
df.deletefile(args[0]);


删除一个不存在的文件,为什么不报错?

java删除文件或文件夹的具体步骤:
1、验证传入路径是否为正确的路径名(Windows系统,其他系统未使用)
// 验证字符串是否为正确路径名的正则表达式
private static String matches = "[A-Za-z]:\\\\\\\\[^:?\\"><*]*";
// 通过 sPath.matches(matches) 方法的返回值判断是否正确
// sPath 为路径字符串
2、通用的文件夹或文件删除方法,直接调用此方法,即可实现删除文件夹或文件,包括文件夹下的所有文件
/**
* 根据路径删除指定的目录或文件,无论存在与否
*@param sPath 要删除的目录或文件
*@return 删除成功返回 true,否则返回 false。
*/
public boolean DeleteFolder(String sPath)
flag = false;
file = new File(sPath);
// 判断目录或文件是否存在
if (!file.exists()) // 不存在返回 false
return flag;
else
// 判断是否为文件
if (file.isFile()) // 为文件时调用删除文件方法
return deleteFile(sPath);
else // 为目录时调用删除目录方法
return deleteDirectory(sPath);



3、实现删除文件的方法
/**
* 删除单个文件
* @param sPath 被删除文件的文件名
* @return 单个文件删除成功返回true,否则返回false
*/
public boolean deleteFile(String sPath)
flag = false;
file = new File(sPath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists())
file.delete();
flag = true;

return flag;

4、实现删除文件夹的方法

/**
* 删除目录(文件夹)以及目录下的文件
* @param sPath 被删除目录的文件路径
* @return 目录删除成功返回true,否则返回false
*/
public boolean deleteDirectory(String sPath)
//如果sPath不以文件分隔符结尾,自动添加文件分隔符
if (!sPath.endsWith(File.separator))
sPath = sPath + File.separator;

File dirFile = new File(sPath);
//如果dir对应的文件不存在,或者不是一个目录,则退出
if (!dirFile.exists() || !dirFile.isDirectory())
return false;

flag = true;
//删除文件夹下的所有文件(包括子目录)
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++)
//删除子文件
if (files[i].isFile())
flag = deleteFile(files[i].getAbsolutePath());
if (!flag) break;
//删除子目录
else
flag = deleteDirectory(files[i].getAbsolutePath());
if (!flag) break;


if (!flag) return false;
//删除当前目录
if (dirFile.delete())
return true;
else
return false;


5、main() 方法

public static void main(String[] args)

HandleFileClass hfc = new HandleFileClass();
String path = "D:\\\\test\\\\folder1\\\\exam1";
boolean result = hfc.CreateFolder(path);
System.out.println(result);
path = "D:\\\\test\\\\folder2";
result = hfc.DeleteFolder(path);
System.out.println(result);

参考技术A deletef.delete()//方法返回的类型是boolean类型·返回的是false
根据看源码,在删除之前,java会去查询该文件是否存在,若不存在返回false

public boolean delete()
SecurityManager security = System.getSecurityManager();
if (security != null)
security.checkDelete(path);

return fs.delete(this);


public void checkDelete(String file)
checkPermission(new FilePermission(file,
SecurityConstants.FILE_DELETE_ACTION));


public boolean delete(File f)

cache.clear();
prefixCache.clear();
return delete0(f);


所以当文件不存时,并不执行删除文件的方法
参考技术B File f = new File("D:\text.txt"); // 输入要删除的文件位置
if(f.exists())
f.delete();

用java控制流实现文件复制后,不能删除文件

每次比如用字符流从硬盘中读取一个文本文件,然后实现复制。在程序结束后,想手动把文件删了,都会提示文件被java程序占用,非得把eclipse关了才能删。但是我明明把输入输出流的关了,为什么不让删呢?

参考技术A 是因为你用流调用File文件后没有关闭流导致的,这时外部不能删除该文件。等退出程序后就可以删除该文件。 参考技术B java的io包中有File类,构造函数是File(String name).
建立一个file类之后可以调用其方法,包括访问属性,删除,复制等。追问

不是这个意思,不是通过程序删,我是说每次手动删文件的时候会提示文件被java程序占用。就是打开我的电脑,用鼠标删的那种

以上是关于java文件删除的主要内容,如果未能解决你的问题,请参考以下文章

java文件怎么删除

JAVA File类 删除文件

java FTPClient如何删除远程服务器端的文件夹及其子文件夹及其内容!

JAVA File类 删除文件

Java:删除某文件夹下的所有文件该如何实现呢?

Java中删除文件删除目录及目录下所有文件