我尝试了一个代码。
嗯,第一部分是基本上放下目录结构的主要方法。我尝试使用下面编写的rmdirs方法删除包含其他目录的目录。
public static void rmdirs(File k)
{
String[] y= k.list();
int i;
File f;
for(i=0;i<y.length;i++)
{
f= new File(k,y[i]);
if(f.isDirectory() && f.list().length>0)
{
rmdirs(f);
}
else
{
f.delete();
}
}
k.delete();
}
rmdirs方法正在运行,似乎正在按照我的预期进行,但如何将此程序添加到库中,以便我可以通过导入内容重复使用它。
此外,上述程序的功能类似于
rmdirs(f2);
删除文件。 我希望它像
f2.rmdirs();
我想知道如何做到这一点。我试过像
那样的东西import java.io.*;
public class RFile extends File
{
public RFile(String p)
{
super(p);
}
public RFile(File f1,String p1)
{
super(f1,p1);
}
public void rmdirs()
{
RFile k=this;
String[] y= k.list();
int i;
RFile f;
for(i=0;i<y.length;i++)
{
f= new RFile(k,y[i]);
if(f.isDirectory() && f.list().length>0)
{
f.rmdirs();
}
else
{
f.delete();
}
}
k.delete();
}
}
但是,测试者类或主类成为我必须使用RFile而不是File的类。
这是个问题;另外,就像我之前问过的那样,如何将所有这些添加到库中,以便导入java.io.RFile
或类似的东西可以完成这项工作?
答案 0 :(得分:1)
你没有扩展java.io.File(除非你有非常好的理由,这不是这个原因)
一种解决方案是创建一个类似“FileUtils”的类,它具有静态方法“remove”,因此您可以调用:
FileUtils.remove(myFile);
这是一个通用的设计理念,你可以在例如apache库中找到它(例如http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html)
<强>更新强>
库只是具有特定用途的可重用代码集合。
Apache是一个管理很多开源项目的基础(如果不是全部基于java的话,很多)。它们提供可以重复使用的高质量(尽管在少数情况下已过时)软件。当你在它的时候,你可能想看一看“apache maven”来处理项目的生命周期并简化图书馆管理(不管你信不信,它有一个包含600,000多个库的完整存储库供你使用使用:http://mvnrepository.com/
这只是一个(虽然是最大的)存储库......
设计哲学是一个巨大的主题,与编码人员一样多的意见。但是,每个人都遵循一些最佳实践。
Apache通常具有相当高质量的代码,因此如果不是代码,您可以检查它们,至少对于编写库的好方法。除此之外,我只能指向书籍和谷歌寻找你的方式。
编写可维护的代码更像是一门艺术,而不是一门科学,需要大量的阅读和练习来掌握它。