Почему класс FileHandler не работает с косой чертой в Java 9.0.1 в Windows? - PullRequest
0 голосов
/ 09 февраля 2019

Я обнаружил, что класс FileHandler из Logger не работает с прямой косой чертой, однако я прочитал на этом сайте, что прямая косая черта может использоваться в Windows с Java без проблем.

Я обнаружил, что это проблемный бит кода:

 baseDir="C:/ets/phone/log/";
 System.out.println("Basedir is:"+baseDir);
 fh = new 
 FileHandler(baseDir+File.separator+"LogFile.%g.txt",1024000,5,true);

Сбой из-за следующей ошибки:

    Basedir is:C:/ets/phone/log/
java.nio.file.NoSuchFileException: C:ets\phone\log\LogFile.0.txt.lck
        at java.base/sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
        at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
        at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
        at java.base/sun.nio.fs.WindowsFileSystemProvider.newFileChannel(Unknown Source)
        at java.base/java.nio.channels.FileChannel.open(Unknown Source)
        at java.base/java.nio.channels.FileChannel.open(Unknown Source)
        at java.logging/java.util.logging.FileHandler.openFiles(Unknown Source)
        at java.logging/java.util.logging.FileHandler.<init>(Unknown Source)
        at java.logging/java.util.logging.FileHandler.<init>(Unknown Source)
        at LogMe.<init>(LogMe.java:28)
        at ETSServer.main(ETSServer.java:198)
Exception in thread "main" java.lang.NullPointerException
        at java.base/java.util.Objects.requireNonNull(Unknown Source)
        at java.logging/java.util.logging.Logger.addHandler(Unknown Source)
        at LogMe.<init>(LogMe.java:40)
        at ETSServer.main(ETSServer.java:198)

Если заменить косые черты на File.seperator, оно работает.Это ошибка?Должен ли я сообщить об этом?

baseDir="C:/ets/phone/log/";
baseDir=baseDir.replace("/",File.separator);
System.out.println("Basedir is:"+baseDir);
fh = new FileHandler(baseDir+File.separator+"LogFile.%g.txt",1024000,5,true);
...