2012-05-16 87 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

相關問題