Duvida I/O

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?

thingol já tinha feito

E qual foi a exceção que foi lançada em runtime?

IOException

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.

file.createNewFile();

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();
        }
    }
} 

Value thingol