2012-05-16 46 views
-2

如下所示修改MP3文件会导致内存不足错误。反正我有可以更有效地做下面的操作(即使用较少的内存)如何在不增加JVM的情况下处理堆空间?

public void BacaMP3(){ 
    String a = System.getProperty("user.dir") + "/src/MP3/21.waltz-cut.mp3"; 
String bitMP3=""; 
    try { 
     File song = new File(a); 
     FileInputStream file = new FileInputStream(song); 

     int input = 0; 
     System.out.println("Creating file ..."); 
     while (input != -1) { 
      input = file.read(); 
      count++; 
      if (input==-1)bitMP3="#"; 
      else{ 
       bitMP3 = Integer.toBinaryString(input); 
       while(bitMP3.length()<8){ 
        bitMP3="0"+bitMP3; 
       } 
      } 

      area1.append(bitMP3+"\n"); 

     } 
     System.out.println(count); 
     file.close(); 

     System.out.println("Done"); 
    } catch (Exception e) { 
     System.out.println("Error  " + e.toString()); 
    } 
} 
+4

什么是你真正想干什么?你为什么想做这个? –

+0

您的问题需要重新解释,以便我们理解问题。你的意思是你在执行上述程序时内存不足了吗?如果是这样,你正在使用的最小/最大堆以及mps文件有多大。在sidenode上,你在你的程序中使用String作为bitMP3,使用StringBuffer代替 – Chandra

+0

我想要做MP3处理,我想在MP3中改变一下....但是当我这样做的时候......我的内存正在运行out ..我尝试增加JVM,但它仍然不够。 – haidey

回答

0

担任首发

while(bitMP3.length()<8){ 
    bitMP3="0"+bitMP3; // Here you are creating two string till count is less than 8 move it to string buffer 
} 

area1.append(bitMP3+"\n"); // Here you are already using string buffer why doing string concatenation then change to area1.append(bitMP3).append("\n"); 
+0

谢谢你...我会用字符串缓冲区 – haidey

+0

试一下ok你的发现 – mprabhat

相关问题