我们都知道,在我们日常工作中,免不了总是和文件打交道,尤其对于Linux/Unix操作系统的用户而言,对文件的操作和处理总是很经常的事儿,就如日常便饭一样的。那么,我们有没有想过一个问题呢?如何去掉文件的后缀名只保留文件名或者只得到文件的后缀名呢?这样的情况,我相信我们工作中是经常遇见的。下面我们就来实践一下,看怎么实现这个功能。

public class FileDot {

    private String allfilename;    //文件的全名称 包括绝对路径和相对路径的情况
    private String fileextension; //文件的后缀名
    private String filename;     //文件的名称

    //返回文件后缀名的方法
    private String returnextension(String file)
    {
        allfilename=file;
        fileextension=allfilename.substring(allfilename.lastIndexOf("."),allfilename.length());
        return fileextension;
    }

    //返回文件名称的方法
    private String returnfilename(String file)
    {
        allfilename=file;
        //windows下的绝对路径
        if(allfilename.lastIndexOf("\\")!=-1)
        {
            filename=allfilename.substring((allfilename.lastIndexOf("\\")+1),allfilename.lastIndexOf("."));
        }
        //Linux下的绝对路径
        else if(allfilename.lastIndexOf("/")!=-1)
        {
            filename=allfilename.substring((allfilename.lastIndexOf("/")+1),allfilename.lastIndexOf("."));
        }

        else
        {
        filename=allfilename.substring(0,allfilename.lastIndexOf("."));
        }
        return filename;
    }

    //程序主入口 示例
    public static void main(String[] args)
    {
        FileDot fd=new FileDot();
        System.out.println(fd.returnextension("E:\\home\\hello_world.apw"));
        System.out.println(fd.returnfilename("/home/squirrel-chen/helloworld.txt"));
        System.out.println(fd.returnfilename("E:\\home\\java\\hellojava.java"));
        System.out.println(fd.returnextension("/home/squirrel-chen/helloworld.txt"));
        System.out.println(fd.returnextension("E:\\home\\java\\hellojava.java"));
    }
}

程序经测试通过,如有更好的方法,请告知我,谢谢。鄙人不才,如有错误,还望各位包涵!谢谢!