如何将用户编写的程序发送到库?

时间:2014-02-14 11:57:21

标签: java file file-io shared-libraries delete-file

我尝试了一个代码。

嗯,第一部分是基本上放下目录结构的主要方法。我尝试使用下面编写的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或类似的东西可以完成这项工作?

1 个答案:

答案 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通常具有相当高质量的代码,因此如果不是代码,您可以检查它们,至少对于编写库的好方法。除此之外,我只能指向书籍和谷歌寻找你的方式。

编写可维护的代码更像是一门艺术,而不是一门科学,需要大量的阅读和练习来掌握它。