Duvida E/s

e pessoal pq o codigo abaixo nao compila:

import java.io.File;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
class Print{
	public static void main(String args[]){
		try{
			File file = new File("ar.txt");
			PrintWriter pw = new PrintWriter(file);
				pw.println("camilo");
				pw.println("lopes");
				pw.flush();
				pw.close();
		}catch(IOException e){}
		try{
				//lendo os dados do arquivo
		FileReader fr = new FileReader(file);		
		BufferedReader br = new BufferedReader(fr);
			String nome = br.readLine();
				System.out.println(nome);
				br.close();
		}catch(IOException e){}
	}
}

esse codigo so compila se eu tirar o try{} e o catch{} da leitura pq?
e ja esse compila…

package cap6.es;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.FileReader;

public class Writes {
static char[] c = new char[4];
	public static void main(String[] args) {
		File f = new File("write.txt");
		try{
			f.createNewFile();
		
		FileWriter fw = new FileWriter(f);
			fw.write("lopes");
			fw.flush();
			fw.close();
		}catch(IOException e){}
		//lendo o arquivo
		try{
		FileReader fr = new FileReader(f);
			fr.read(c);
		System.out.println(c);
		}catch(IOException e){}
			
	}

}

fiquei confuso… nesse ponto… pois queria colocar para a leitura um bloco try e catch separado do bloco que escreve dados no arquivo…
:?

você está tentando chamar o objeto file e ele esta dentro do 1º bloco de código de try e catch, ou seja ela só
vai ser visivel dentro do 1° try e catch

Faça assim que vai funcionar, porque o objeto file não está em nenhum bloco try e catch()

public static void main(String args[]){
		File file = new File("ar.txt");
 		try{
 			PrintWriter pw = new PrintWriter(file);
 				pw.println("camilo");
 				pw.println("lopes");
 				pw.flush();
 				pw.close();
 		}catch(IOException e){}
 		try{
 				//lendo os dados do arquivo
 		FileReader fr = new FileReader(file);		
 		BufferedReader br = new BufferedReader(fr);
 			String nome = br.readLine();
 				System.out.println(nome);
 				br.close();
 		}catch(IOException e){}
}

mas pq esse funciona

import java.io.FileReader;
 
 public class Writes {
 static char[] c = new char[4];
 	public static void main(String[] args) {
 		File f = new File("write.txt");
 		try{
 			f.createNewFile();
 		
 		FileWriter fw = new FileWriter(f);
 			fw.write("lopes");
 			fw.flush();
 			fw.close();
 		}catch(IOException e){}
 		//lendo o arquivo
 		try{
 		FileReader fr = new FileReader(f);
 			fr.read(c);
 		System.out.println(c);
 		}catch(IOException e){}
 			
 	}
 
 }

:?: :?:

estranho…

[quote=camilolopes]mas pq esse funciona

import java.io.FileReader;
 
 public class Writes {
 static char[] c = new char[4];
 	public static void main(String[] args) {
 		File f = new File("write.txt");
 		try{
 			f.createNewFile();
 		
 		FileWriter fw = new FileWriter(f);
 			fw.write("lopes");
 			fw.flush();
 			fw.close();
 		}catch(IOException e){}
 		//lendo o arquivo
 		try{
 		FileReader fr = new FileReader(f);
 			fr.read(c);
 		System.out.println(c);
 		}catch(IOException e){}
 			
 	}
 
 }

:?: :?:[/quote]

Porque o objeto f não está no bloco try/ catch

pooo verdade matou a charada!!! :smiley: