Visualizza messaggio singolo
Vecchio 10-10-2006, 17.09.57   #7
aduri
Newbie
 
Registrato: 23-08-2006
Messaggi: 22
aduri promette bene
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();   	}




    }
aduri non è collegato   Rispondi citando