Sono riuscito a risolvere il problema ma....
qualcuno puo' aiutarmi a capire come scrivere su file la lista proc.
Grazie[
]
Codice:
import java.util.*;
import java.lang.*;
import java.io.*;
class Processo implements Comparable{
private int pid;
private String name;
private int memoria;
public Processo(int pid,String name,int mem){ // costruttore
this.pid=pid;
this.name=name;
memoria=mem;
}
public int compareTo(Object o){
Processo p=(Processo)o;
return this.memoria-p.memoria;//ordina in base alla quantità di memoria in ordine crescente
}
public int getMemoria(){
return this.memoria;
}
public String toString(){
return ""+pid+" "+name+" "+memoria;
}
} //chiudo la classe processo
public class EsProcesso
{ // classe col main
public static void main(String[] args) throws IOException
{
String nomeFile="processes.txt";
BufferedReader fileLettura=null;
SortedLinkedList lista=new SortedLinkedList();
try {
try{
fileLettura = new BufferedReader(new FileReader(nomeFile));
String linea=fileLettura.readLine();
while(linea!=null) {
String[] tmp=linea.split("\t");
// convertiamo le stringhe in intero con parseInt e valueOf x il contrario
Processo p=new Processo(Integer.parseInt(tmp[0]),tmp[1],Integer.parseInt(tmp[2]));
lista.add( p);
linea=fileLettura.readLine();//per far girare il ciclo
}
}finally{ fileLettura.close();}
}catch(FileNotFoundException e) {// gestisco le eccezioni
System.out.println("Il file "+nomeFile + " non esiste o non puo' essere aperto");
}catch(IOException e) {
System.out.println("errore di lettura "+e);
}
Iterator it1=lista.iterator();
while(it1.hasNext()) // fino a che trova un elemento stampa i record
{
Processo proc = (Processo)it1.next();
System.out.println(proc.toString());//e cosi puoi vedere tutta la lista
}
// codice analisi memoria
while(true)
{
Iterator iter = lista.iterator();
int memtot = 0;
while(iter.hasNext())
{
Processo proc = (Processo)iter.next();
memtot += proc.getMemoria();
}
if(memtot >= 100000)
{
System.out.print("Limite di memoria raggiunto, ");
//elimina il processo più grande che è nella prima posizione della lista
iter = lista.iterator();
Processo proc = (Processo)iter.next();
System.out.println("elimino il processo:\n"+proc.toString());
iter.remove();
}
else
break;
}
// apertura del file per la scrittura
FileWriter f = new FileWriter("newproc.txt");
// creazione dell'oggetto per la scrittura
PrintWriter out = new PrintWriter(f);
// scrittura del testo su file
out.println(proc); // QUI DA ERRORE IL COMPILATORE
// chiusura del file
out.close(); }
}