【问题标题】:How to get file extension?如何获取文件扩展名?
【发布时间】:2014-04-14 15:03:09
【问题描述】:

这是我开发的代码,但我被困在一件事上。我想让我的程序识别我的目录中的文件是什么文件扩展名。

import java.io.File;
public class SystemCommands{

   public static void main (String args[]){

      String dir_name = "C:\\Program Files\\WinRAR"; 
      File dir = new File(dir_name);

      File[] dir_list = dir.listFiles();
      for(int i=0;i<dir_list.length;++i)
      {
          System.out.println(dir_list[i].getName());
          System.out.println("Is it a directory = " + dir_list[i].isDirectory());
          System.out.println("Is it a file = " + dir_list[i].isFile());
      }
   }
}

【问题讨论】:

  • “识别”是什么意思?你想过滤它们还是什么?
  • 指定文件类型的过滤器。例如在 WinRAR 我有 winrar.txt,程序会说 winrar.txt 有 .txt 扩展名。

标签: java command system


【解决方案1】:
Try this one...


File fileName= new File("Animation.xml");    
String str= fileName.getName();    
System.out.println(fileName.getName());    
System.out.println(str.substring(str.lastIndexOf(".")));     

【讨论】:

    【解决方案2】:

    使用来自 Apache Commons IO 的 FilenameUtils.getExtension

    这是一个使用示例:

    String ext = FilenameUtils.getExtension("/path/file/file.txt");
    

    【讨论】:

      【解决方案3】:
      String filename=null;    
      for(int i=0;i<dir_list.length;++i)
             {
              filename=dir_list[i].getName();
              if(dir_list[i].isFile())
               {
                 System.out.println(filename.split(\\.)[(filename.split(\\.)).length-1]);
               }
      
             }
      

      【讨论】:

        【解决方案4】:
        File f = new File("test.txt");
                    String [] str = f.getName().split("\\.");
                    if(str.length>1) {
                        System.out.println(str[1]);
                    }else {
                        System.out.println("No extension. File name is :" + str[0]);
                    }
        

        【讨论】:

        • 第一个索引不一定是扩展。
        • @Deepak213 你能举个例子吗?
        • 如果文件名是“abc.abc.txt”那么你的案例就会失败。
        • @Deepak213 是对的。您应该使用lastIndexOf 而不是split,或者打印str 中的最后一个元素。
        • 但是检查最后一个索引的问题是,它不会为像“test.log.0”、“test.tar.gz”这样的文件提供正确的扩展名......你同意吗?
        【解决方案5】:

        您可以使用String#lastIndexOf 并简单地这样做:

        String file = dir_list[i].toString();
        System.out.println(file.substring(0, file.lastIndexOf('.')));
        

        或者,您可以使用FilenameUtils#getExtension:

        System.out.println(FilenameUtils.getExtension(yourString));
        

        【讨论】:

          猜你喜欢
          • 2012-07-23
          • 2017-12-22
          • 1970-01-01
          • 2019-03-22
          • 1970-01-01
          • 1970-01-01
          • 2014-07-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多