Por que não consigo pegar o arquivo?

Não estou conseguindo pegar o arquivo para incluir os caracteres numa matriz.
alguem sabe me dizer o que ocorre?
desde já agradeço
att fernando nascimento

 import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.LinkedList;

public class FordBellman {
	public static void main(String[] args) {
		new FordBellman ();
	}

       
      private static final String CAMINHO_ARQUIVO = "arquivo.txt";
      private static final String DELIMITADOR_DADOS = " ";
      
      int INF = Integer.MAX_VALUE;
      int i = 0;
      int j = 1;
      int c = 2;
      int s =0;
      int atual=-1;
      int linha= 0;
      int vertices= 8;
      int arestas= 9;
      float inicio=0;
      float fim=0;      
      int rotulo[] = new int[vertices];
      int predecessor[] = new int[vertices];
      int[][] matriz = new int[arestas][3];
      LinkedList<Integer>lista= new LinkedList<Integer>();
      boolean[] entrada = new boolean[vertices];
      Calendar tempo = new GregorianCalendar();      



      public FordBellman(){ 
    	   
    	   try {
               /* Arquivo que será lido */
               FileReader fr = new FileReader( CAMINHO_ARQUIVO );
               BufferedReader br = new BufferedReader( fr );
               while(br.ready()){		    	
   		    	String[] corrente = (br.readLine()).split(" ");
   		    	matriz[linha][i] = Integer.parseInt(corrente[0]);
   		    	matriz[linha][j] = Integer.parseInt(corrente[1]);
   		    	matriz[linha][c] = Integer.parseInt(corrente[2]);    	              
   		    	linha++;
               }   
   		   }catch (FileNotFoundException e) {
   			   e.printStackTrace();
   		   }catch (IOException ioe) {
   			   ioe.printStackTrace();
   		   }catch ( NumberFormatException nfe ) {
   			   nfe.printStackTrace();
           }
  		
   		   //inicialização dos  rotulos que não s. 
   		   for(int x=1;x<=vertices;x++){
   			   rotulo[x]= INF;
   		   }
   		
   		   predecessor[s] = 0;
   		   
   		   //inicializa rotulo s com 0
   		   rotulo[s] =0;
   		inicio = tempo.getTimeInMillis();   
   		while(!lista.isEmpty()){
   			atual = lista.removeFirst();
   			int comparacoes =0;
   			//faz varredura em todas as arestas
   			for(int linhav=0;linhav<arestas;linhav++){
   				//verifica as que tem i igual a atual linhav=linha de verificacao
   				if (matriz[linhav][i] == atual){
					if (rotulo[matriz[linhav][j]] > (rotulo[atual] + matriz[linhav][c])){
						System.out.println("alterado rotulo do vertice " + matriz[linhav][j] + " para o rotulo " + (rotulo[atual] + matriz[linhav][c]));
						rotulo[matriz[linhav][j]] = rotulo[atual] + matriz[linhav][j];
						predecessor[matriz[linhav][j]] = atual;
						exibe();
						//verifica se arco está na lista ou não. Se não estiver será adicionado ao fim dela com o método addlast
						if(!(lista.contains(matriz[linhav][j]))){
                          if (entrada[matriz[linhav][j]]){
                              System.out.println("adicionado " + matriz[linhav][j] + " no início da fila.");
                              addLast(lista,matriz[linhav][j]);
                           }
                          }
					}
				}
				//contador de comparacoes
				comparacoes++;
			}
   			fim= tempo.getTimeInMillis();
   			
   		}

    }
       
    void exibe(){
    	System.out.printf("Tempo total decorrido é de:%f", fim - inicio);
   		System.out.print("Predecessores: ");
   		for(int contador=1; contador<=vertices;contador++){
   			System.out.print(predecessor[contador] + " ");	
   		}
   		System.out.println("");
   		System.out.print("Rotulos: ");
   		for(int contador=1;contador<=vertices;contador++){
   			System.out.print(rotulo[contador] + " ");	
   		}
   		System.out.println(".");
   	}
       
    void addLast(LinkedList listaRecuperada,int x){
          entrada[x] = true;
          listaRecuperada.addLast(x);
    }

}

Em vez de usar “arquivo.txt”, se você não está conseguindo encontrar o arquivo, então ponha seu nome completo (por exemplo, se ele fica em “c:\documents and settings\joao\meus documentos\arquivo.txt”, você tem de especificar, duplicando os “”:

“c:\documents and settings\joao\meus documentos\arquivo.txt”

ela teria que ficar na mesma pasta do meu arquivo .java?
na pasta src?

Quando você escreve só “arquivo.txt”, o Java procura no diretório corrente, mas o diretório corrente depende de como você está iniciando o programa. Raramente o diretório corrente é a pasta src do seu projeto - normalmente ele não é.
Veja nas opções para rodar seu programa (isso no Eclipse ou Netbeans) qual é o diretório a partir do qual ele inicia seu programa.