Duvida I/O

8 respostas
M
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

8 Respostas

T

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?

M

thingol já tinha feito

T

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

M

IOException

T

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.

M

file.createNewFile();

T

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

Value thingol

Criado 15 de julho de 2009
Ultima resposta 15 de jul. de 2009
Respostas 8
Participantes 2