Bonjour, je travaille sur une application de gestion de playliste winamp donc voici ma fonction qui crée un fichier html avec divers renseignement.
public void creehtml(boolean allormissed)//true on affiche tous les fichier de la playliste et false on affiche que les fichiers manquants
{
boolean mp3;
if(allormissed)//on affiche tout.
{
try{
BufferedWriter fW= new BufferedWriter(new FileWriter("PlaylisteAll.html",true));
fW.write("<center>Voici une exportation de votre playList en Html</center>"+"\r\n");
fW.write("<br><br>");
fW.write("<table><tr><td>nom du fichier</td><td>chemin</td><td>Groupe</td><td>Titre</td><td>Statut</td></tr>");
String artistetemp=null,titretemp=null;
for(int i=0;i<file.size();i++)
{
mp3=false;
try
{
if((Vfichier.elementAt(i).toString().contains(".mp3"))&&(Existe.elementAt(i).toString().equals("oui")))
{
try//création d'un objet MP3File tampon je recupère les info que je désire et je passe mon temp à null et je vide "les dechets"
{
MP3File temp = new MP3File(Vfichier.elementAt(i).toString());
mp3=true;
artistetemp = temp.getArtist().getTextContent();
titretemp = temp.getTitle().getTextContent();
temp=null;
Runtime.getRuntime().gc();
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
//j'affiche divers information comme le chemin et le nom du fichier son
fW.write("<tr><td>");
fW.write(file.elementAt(i).toString());
fW.write("</td><td>");
int longueur = Vfichier.elementAt(i).toString().length()-file.elementAt(i).toString().length();
String temp2 = Vfichier.elementAt(i).toString().substring(0,longueur);
fW.write(temp2);
fW.write("</td><td>");
if(mp3)//si c'est un mp3 alors j'ecris les information issue du ID3v2 dans ma pages html
{
if(artistetemp!=null)
fW.write(artistetemp);//nom de l'artiste
else
fW.write(" ");
fW.write("</td><td>");
if(artistetemp!=null)
fW.write(titretemp);
else
fW.write(" ");
}
else //si c'est pas des mp3 j'ecris des espaces
{
fW.write(" ");
fW.write("</td><td>");
fW.write(" ");
}
artistetemp=null;//je passe mes chaines de caractrères a null.
titretemp=null;
fW.write("</td><td>");
if(Existe.elementAt(i).toString().equals("oui"))
{
fW.write("Présent"+"\r\n");
}
else
{
fW.write("Indisponible"+"\r\n");
}
}
catch(Exception e)
{
//System.out.println(ligne+" 1");
System.out.println(e.toString());
System.gc();//si une exception est reçu ici on vide les dechets.
}
}
fW.close();
}
catch(IOException e)
{
//System.out.println(ligne+" 1");
System.out.println(e.toString());
}
}
else//cette partie fonctionne tres bien.
{
try{
BufferedWriter fW= new BufferedWriter(new FileWriter("PlaylisteIndispo.html",true));
fW.write("<center>Voici liste des fichiers qui n'existe plus sur votre disque</center>"+"\r\n");
fW.write("<br><br>");
fW.write("<br><br>");
fW.write("<table><tr><td>nom du fichier</td><td>chemin</td></tr>");
for(int i=0;i<file.size();i++)
{
if(Existe.elementAt(i).toString().equals("oui"))
{
}
else
{
System.out.println(file.elementAt(i).toString());
fW.write("<tr><td>");
fW.write(file.elementAt(i).toString());
fW.write("</td><td>");
int longueur = Vfichier.elementAt(i).toString().length()-file.elementAt(i).toString().length();
String temp2 = Vfichier.elementAt(i).toString().substring(0,longueur);
fW.write(temp2);
fW.write("</td></tr>");
}
}
fW.close();
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
}
j'ai utilisée une librairy:
[ Lien ] pour les classes MP3File et j'ai écris à l'auteur mais l'email n'est pas arrivé.
j'ai lu sur divers forum que cette erreur était un dépassement de la capacité mémoire de la JVM. J'ai vu diverses solutions comme l'option -Xmx250m pour augmenter l'espace mémoire de la JVM cela ne fonctionne pas et le garbage collector ne m'aide pas plus.
pour info: ma playliste contient 14 110 fichier de musique et celà plante vers le 1 300ème.
voila merci.