使用getName()时如何摆脱文件类型?

时间:2012-10-17 15:33:40

标签: java

这样做只是因为我很懒。我刚刚编写了一个程序,将我的所有音乐列入excel文件。

   import java.io.*;
   import org.apache.commons.io.FileUtils;

      public class NewClass {

        public static void main( String args[] ) 
        {
           File folder = new File("C:/Users/Public/Music/OldMusic");
           File[] listOfFiles = folder.listFiles();

            for (int i = 0; i < listOfFiles.length; i++) {
             try{
                 FileUtils.writeStringToFile(new File("test.xls"), listOfFiles[i].getName(), true);
                 BufferedWriter output;
                 output = new BufferedWriter(new FileWriter("test.xls", true));
                 output.newLine();
                 output.close();
             }
             catch (IOException e){
             }
          }
      }
     }

代码工作正常,但每首歌的结尾都有 .mp3 (即: Metallica - Nothing Else Matters.mp3 )。

有没有办法让歌曲的名字在其末尾没有 .mp3

3 个答案:

答案 0 :(得分:3)

由于您已经在使用FileUtils,请注意您获得了处理扩展程序的方法。

请参阅FileUtils.removeExtension

查看代码,您会看到这些处理文件扩展名的方法 - getExtensionisExtension - 只需使用lastIndexOf,所以他们只会处理简单的案件,但这应该足以满足您的目的。

答案 1 :(得分:1)

使用:

String fname = listOfFiles[i].getName();
fname.substring(0, fname.lastIndexOf("."))

而不是传递..

listOfFiles[i].getName()

答案 2 :(得分:1)

import java.io.*;
import org.apache.commons.io.FileUtils;

  public class NewClass {

    public static void main( String args[] ) 
    {
       File folder = new File("C:/Users/Public/Music/OldMusic");
       File[] listOfFiles = folder.listFiles();

        for (int i = 0; i < listOfFiles.length; i++) {
         try{
             FileUtils.writeStringToFile(new File("test.xls"), listOfFiles[i].getName().substring(0, listOfFiles[i].getName().indexOf(".mp3")), true);
             BufferedWriter output;
             output = new BufferedWriter(new FileWriter("test.xls", true));
             output.newLine();
             output.close();
         }
         catch (IOException e){
         }
      }
  }
 }