Pourquoi cette différence?Pourquoi 'Files.exists' renvoie-t-il true, mais 'File.exists' renvoie false? il se produit uniquement lorsque le nom de fichier est en caractères multi-octets
Path docDir
Paths.exists(docDir):true
docDir.toPath().exists():false
autres attribuent:
Files.isDirectory(docDir)=true
Files.isExecutable(docDir)=true
Files.isHidden(docDir)=false
Files.isReadable(docDir)=true
Files.isRegularFile(docDir)=false
Files.isSymbolicLink(docDir)=false
Files.isWritable(docDir)=true
Files.notExists(docDir)=false
Ce problème ne se produit pas dans les chaînes de caractères sur un octet.
version Linux est
Linux version 2.6.32-431.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC))
cette application est le service, et je l'aide de la bibliothèque springBoot.
Il n'y a aucun problème à utiliser 'nio' pour la lecture/écriture, mais l'utilisation de 'io.File' donnera 'FileNotFoundException'.
Y at-il quelque chose que j'ai mal fait?
Est-il un lien symbolique? Quelle version de Java utilisez-vous? Je n'arrive pas à trouver 'exists' dans' Paths' ou 'Path' (to' toPath') d'ailleurs – MadProgrammer
FYI: 'java.io' ne gère pas les liens symboliques, alors que' java.nio' le fait (un meilleur travail) – MadProgrammer
Alors, quel est le caractère réel qui a le problème? et aussi puisque vous utilisez un vieux linux, et que votre nom ressemble à du japonais, utilisez-vous quelque chose comme le code de caractère "euc-jp" ou "shift-jis"? et quel est le système de fichiers que vous utilisez? – ymonad