File.isFile () retorna resultado incorreto?

winflex:
public class Test {
  public static void isFile() {
    System.out.println(new File("D:\\a.log").isFile());
  }

  public static void main(String[] args) {
    System.out.println(new File("‪D:\\a.log").isFile());
    isFile();
  }
}

O resultado esperado é:

true
true

mas, na verdade, o resultado é:

false
true

O arquivo D: \ a.log é realmente existe eo caminho está correto, a versão JDK 1.8.0_11 é, eo sistema operacional é win10

Como entender isso ??

Erwin Bolwidt:

A corda "‪D:\\a.log"no interior do mainmétodo tem 9 caracteres, a um no isFilemétodo tem 8 caracteres.

A um dentro do mainmétodo começa com invisível de caracteres Unicode U + 202A ( "LEFT-TO-RIGHT EMBEDDING").

Substitua o interior corda maincom o interior corda isFileou excluir o primeiro personagem invisível da corda no main.

(Nota: Isto mostra o benefício real do cópia-colar seu código real, como o problema está no código que você colou na sua pergunta acima)

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=183723&siteId=1
Recomendado
Clasificación