Manipulação de arquivos

Pessoal estou fazendo um programa com manipulação de arquivos. O primeiro passo é escrever em um documento “.txt” via teclado na

entrada. Depois outro programa deve pegar o arquivo “.txt” que foi feito no primeiro programa e adicionar uma média as notas que foram

enviadas justamente no primeiro programa. No último programa deve-se pegar o “.txt” do segundo programa e mostrar as notas de maior para

menor em outro “.txt”.

Aqui está o código do primeiro programa…

[code]public class DoTeclado
{
public static void main(String[] args)
{
File f = new File(“C:/Documents and Settings/Lucas Moura/Meus documentos/NetBeansProjects/DoTeclado/Notas1.txt”);

    // Escrevendo do teclado para o arquivo ".txt"
   try
   {
   Scanner s = new Scanner(System.in);
   PrintStream ps = new PrintStream("Notas1.txt");
   
   while(s.hasNextLine())
   {
       ps.println(s.nextLine());
   }
   
   }
   catch(FileNotFoundException e)
   {
       System.out.println(" Arquivo não encontrado ");
   }  

}

}[/code]

E aqui o código do segundo arquivo que ainda está incompleto:

[code]public class RecebeArq
{
public static void main(String[] args)
{
// O código para poder ler o arquivo do primeiro bloco de notas(.txt)
try
{
InputStream is = new FileInputStream(“C:/Documents and Settings/Lucas Moura/Meus documentos/NetBeansProjects/DoTeclado/Notas1.txt”);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String b = br.readLine();

        while(b != null)
        {            
        System.out.println(b);
        b = br.readLine();
        }           
        
        
    }
    catch(IOException e)
    {
        System.out.println(" Arquivo não encontrado ");            
    }
    
    
   // Aqui está enviando para o novo bloco de notas as informações  
   try
   {
   Scanner s = new Scanner(System.in);
   PrintStream ps = new PrintStream("Notas2.txt");
   
   while(s.hasNextLine())
   {
       ps.println(s.nextLine());
   }
   
   }
   catch(FileNotFoundException e)
   {
       System.out.println(" Arquivo não encontrado ");
   }
    
    
    
}

}[/code]

Como vocês podem ver o programa é totalmente voltado para manipulação de arquivos, não possui nada de interface gráfica ou outras coisas mais avançadas.

A minha dúvida é como fazer a média das notas do primeiro programa e como colocar as notas em ordem no terceiro programa ?

Obrigado à todos!

Aqui uma solução supondo que as notas estejam escritas, somente elas, cada uma em uma linha, não se importando com a quantidade de notas

public class RecebeArq   
{  
    public static void main(String[] args)  
    {  
        // O código para poder ler o arquivo do primeiro bloco de notas(.txt)  
        try  
        {  
            InputStream is = new FileInputStream("C:/Documents and Settings/Lucas Moura/Meus documentos/NetBeansProjects/DoTeclado/Notas1.txt");  
            InputStreamReader isr = new InputStreamReader(is);  
            BufferedReader br = new BufferedReader(isr);  
            int[] vet;     //vetor para guardar as notas
            int cont = 0;   //variavel conta a quantidade de notas
            String b = br.readLine();  
            String aux = "";   //variavel auxiliar
              
            //loop lê a linha coloca a String com a nota no aux e um separador e incrementa a variável cont que diz o numero de notas
            while(b != null)  
            {              
            System.out.println(b);  
            aux += b + "#";
            cont++;
            b = br.readLine();  
            
            }             
  
           vet = new int[cont];  //cria o vetor de acordo com a quantidade de notas
           StringTokenizer st = new StringTokenizer(aux, "#");    //tira a string do separador
           int media = 0;   
           for(int i = 0; st.hasMoreTokens(); i++)
          {
                 vet[i] = Integer.parseInt(st.nextToken());   //pega o número tirando  o separador e coloca no vetor
                 media += vet[i];                                       //soma as notas
          }

          media = media/cont;     //faz a média
          System.out.println("Média das notas: "+media);

          //algoritmo para ordenacao do vetor de maior para menor
          for(int i = 0; i < vet.length; i++)
          {
              for(int j = 0; j < vet.length-1; j++)
              {
                   if(v[j]<v[j+1]) {
                      int aux2=v[j];
                      v[j]=v[j+1];
                      v[j+1]=aux;
                   }
              }
          }
              
        }  
        catch(IOException e)  
        {  
            System.out.println(" Arquivo não encontrado ");              
        }  
          
          
       // Aqui está enviando para o novo bloco de notas as informações    
       try  
       {  
         
       PrintStream ps = new PrintStream("Notas2.txt");  
         
       for(int i = 0; i < vet.length; i++)
       {  
           ps.println(vet[i]); //coloca no arquivo as notas em ordem decrescente em cada linha  
       }  
         
       }  
       catch(FileNotFoundException e)  
       {  
           System.out.println(" Arquivo não encontrado ");  
       }  
          
          
          
    }  
      
}  

eu não cheguei a testar mas é provável que funcione, quanto ao algoritmo de ordenação caso você saiba quicksort é melhor utilizar, pois aquele gasta bastante processamento.
qualquer coisa posta aí de novo.

C. Porto te agradeço pela resposta. As notas vão está sim cada uma em sua linha e serão duas notas para cada pessoa(são 5 pessoas). Mas tem outra coisa, antes das notas tem o nome das pessoas também em uma linha a cima das duas notas.

Eu ajustei aqui os acréscimos que tu fez no código, estava dando erro em algumas coisas. Na hora da execução só está apresentando uma única média. Tu pode me explicar melhor o que tu fez aí ? e sabe como fazer para calcular todas médias ?

Obrigado novamente!

Ola, desculpe a demora estava preso com outros assuntos, agora deu tempo de testar o algoritmo, então aqui vai:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.StringTokenizer;

public class RecebeArq {

	public static void main(String[] args)
	{
		
	     int[] vet = null;    //vetor para guardar as notas  
         int cont = 0;   //variavel conta a quantidade de notas  
         String aux = "";   //variavel auxiliar  
         int[] media = null;  //vetor para guardar as medias
         int j = 0;   //variavel auxiliar
		
		 // O código para poder ler o arquivo do primeiro bloco de notas(.txt)    
        try    
        {    
            InputStream is = new FileInputStream("C:/Documents and Settings/Lucas Moura/Meus documentos/NetBeansProjects/DoTeclado/Notas1.txt");    
            InputStreamReader isr = new InputStreamReader(is);    
            BufferedReader br = new BufferedReader(isr);    
            String b = br.readLine();    
                
            //loop lê a linha coloca a String com a nota no aux e um separador e incrementa a variável cont que diz o numero de notas  
            while(b != null)    
            {                
                System.out.println(b);
                if(b.matches("\\d+"))  //verifica se a string na linha correspondente contem apenas numeros
                {
                    aux += b + "#";  
                    cont++;  
                }
                b = br.readLine();    
            }               
    
           vet = new int[cont];  //cria o vetor de acordo com a quantidade de notas  
           StringTokenizer st = new StringTokenizer(aux, "#");    //tira a string do separador  
           media = new int[cont/2];    //cria o vetor media com metade das posicoes de vet pois sao 2 notas por aluno
           
           for(int i = 0; st.hasMoreTokens(); i++)  
           {  
        	     if(i+1 == vet.length)   //apenas para a ultima posicao do vet
        	     {
        	    	 vet[i] = Integer.parseInt(st.nextToken());
        	    	 media[j] += vet[i];
        	    	 media[j] /= 2;
        	     }
        	     else
        	     {
        	    	  if (i > 0  && i%2==0)
                      {
               	         media[j] /= 2;
               	         j++;
                      }
                      vet[i] = Integer.parseInt(st.nextToken());   //pega o número tirando ja sem o separador  
                      media[j] += vet[i];                          //soma as notas  
        	     }
           }  
           
          
  
          //algoritmo para ordenacao do vetor de maior para menor --- bubble sort
          for(int i = 0; i < media.length; i++)  
          {  
              for(int y = 0; y < media.length-1; y++)  
              {  
                   if(media[y] < media[y+1]) {  
                      int aux2 = media[y];  
                      media[y]= media[y+1];  
                      media[y+1] = aux2;  
                   }  
              }  
          }  
                
        }    
        catch(IOException e)    
        {    
            System.out.println(" Arquivo não encontrado ");                
        }    
            
            
       // Aqui está enviando para o novo bloco de notas as informações      
       try    
       {    
           
       PrintStream ps = new PrintStream("Notas2.txt");    
           
       for(int i = 0; i < media.length; i++)  
       {    
           ps.println("Media"+i+": "+media[i]); //coloca no arquivo as notas em cada linha.  
       }    
           
       }    
       catch(FileNotFoundException e)    
       {    
           System.out.println(" Arquivo não encontrado ");    
       }    
            
            
	}
	
}

qualquer dúvida sobre o código posta aí.