Bom dia,
Gostaria de saber a diferença que há na forma de se referir para um diretório
-
/PASTA/SUBPASTA
-
\PASTA\SUBPASTA\
-
C:\PASTA\SUBPASTA\
Desde já agradeço.
Bom dia,
Gostaria de saber a diferença que há na forma de se referir para um diretório
/PASTA/SUBPASTA
\PASTA\SUBPASTA\
C:\PASTA\SUBPASTA\
Desde já agradeço.
A segunda forma não menciona o drive - você não sabe se é o drive C: ou D: ou X:
A primeira forma é equivalente à segunda, o Windows sabe “desvirar” as barras.
Legal entanglement
Estava com a mesma dúvida, vlw.
Boa tarde,
Sei que é um tópico um tanto quanto antigo, mas hoje me deparei com essa situação.
Eu instancio um objeto File, passando como parametro o diretório, exemplo:
String local = metodoQueLeArquivoProperties.getCaminho(); // no .properties está assim = path.upload.arqpgto=/PASTA/SUBPASTA/CPB/
File diretorio = new File(local);
File arquivos[] = diretorio.listFiles();
Nesse caso, quando não especificamos o drive, como o JVM encontra o diretório?
O diretório real, no caso do servidor está em C:\PASTA\SUBPASTA\CPB\
* OBS: Servidor de Aplicação rodando no Windows Server.
Desde já agradeço.
Você está perguntando qual é o drive corrente (um conceito do Windows)?
Na verdade, a JVM só sabe qual é o diretório corrente (experimente imprimir ou logar o valor de new File (".").getAbsolutePath() ).
Qual é o drive corrente (um conceito do Windows)?
Digamos que você tenha um java.io.File inicializado com “/PASTA/SUBPASTA/CPB”
Para saber que drive ele está usando, você usa getCanonicalPath():
new File ("/PASTA/SUBPASTA/CPB").getCanonicalPath();
Se o Windows vai dizer que isso é C: ou D: aí depende de como você iniciou seu programa.
Não, minha dúvida é como a JVM chega ao diretório, mesmo eu não especificando o drive.
Quando instancio a classe File("/PASTA/SUBPASTA/CPB/ ") tal referencia aponta para C:\PASTA\SUBPASTA\CPB\
Valew.
Bom, vamos lá.
Quando você inicia seu programa Java usando-se algo como:
rem -- mudando o drive corrente para o drive D:
d:
rem -- mudando o diretório corrente do drive C: para c:\windows\system32
cd c:\windows\system32
rem -- mudando o diretório corrente do drive D: para d:\programas
cd d:\programas
java -jar c:\aplicativo\MeuAplicativo.jar
ou coisa parecida, o Java está usando o diretório corrente onde o programa foi iniciado. Nesse caso o diretório corrente a ser usado é o do drive corrente (D: ) -> d:\programas.
O Java não tem um comando “chdir” dentro dele, então não é possível mudar o diretório corrente dentro de um programa Java sem usar algum truque (como JNI, por exemplo).
Quando você executa algo como new File ("/pasta/subpasta/aplicativo").getCanonicalPath() ou alguma coisa parecida, ele simplesmente pede ao Windows para que resolva essa string ("/pasta/subpasta/aplicativo") - a JVM não faz absolutamente nada, nada mesmo, só repassa isso para as APIs do Windows.
Nesse caso, como o drive corrente é D:, ele vai tentar achar “d:\pasta\subpasta\aplicativo”.
Muito obrigado pela explicação!!!
Agora sim compreendi!!