class MakeFile {
11. public static void main(String[] args) {
12. try {
13. File directory = new File(“d”); A exception é lançado porque não foi feito o directory.mkdir();???
14. File file = new File(directory,“f”); Nessa linha indica que o arquivo f deve ficar dentro do directory apos o file.creatNewFile();???
15. if(!file.exists()) {
16. file.createNewFile();
17. }
18. } catch (IOException e) {
19. e.printStackTrace
20. }
21. }
22. }
porque uma exception é lançada runtime??? é por causa do mkdir???
valeu pessoal
Pegue esse programa, compile-e e o rode. Aí você vai ver o que ocorre. Depois fica bem mais fácil de explicar, não?
E qual foi a exceção que foi lançada em runtime?
Beleza; e em que linha essa exceção foi lançada? Não poste aqui o número da linha. Copie aqui o conteúdo da linha onde ocorreu essa exceção.
Pois é, vamos lá. Vamos comentar linha por linha.
A primeira coisa é que a questão é ligeiramente mal-formulada, porque supõe que não exista um subdiretório “d” dentro do diretório corrente, e se houver um subdiretório “d”, que você não tenha permissão de acesso. Esse tipo de questões não caem, porque são mal-formuladas.
Pode cair coisas parecidas, mas não tão mal-formuladas assim.
Supondo que o tal diretório não exista, então:
class MakeFile {
public static void main(String[] args) {
try {
File directory = new File("d"); // isto não cria exceção nenhuma... O nome de arquivo ou diretório é "d".
File file = new File(directory,"f"); // O nome de arquivo ou diretório aqui é "d/f".
if(!file.exists()) { // ele está vendo se "d/f" existe; vamos supor que não exista.
file.createNewFile(); // se o diretório "d" não existir, isso vai realmente gerar um "IOException". Mas
// se o diretório "d" existir mas você não tiver acesso a ele, também vai haver um "IOException".
// Realmente, você só conseguiria passar deste ponto (createNewFile) se o diretório "d" existir - isso
// não foi testado no programa - e se você tiver permissão para criar um arquivo com o nome "f" dentro dele.
}
} catch (IOException e) {
e.printStackTrace();
}
}
}