Formas de referenciar um diretório

Bom dia,

Gostaria de saber a diferença que há na forma de se referir para um diretório

  1. /PASTA/SUBPASTA

  2. \PASTA\SUBPASTA\

  3. 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!!