java.nio.file.Files
एपीआई पुरानी java.io.File
कक्षा में वास्तव में एक अच्छा सुधार है, लेकिन एक विवरण मुझे अजीब के रूप में मारता है; delete()
के अपवाद के साथ कोई विधि दस्तावेज नहीं है कि वे NoSuchFileException
फेंक सकते हैं, और यहां तक कि delete()
कहता है कि यह वैकल्पिक है।क्या मुझे उम्मीद है कि फ़ाइलों में विधियों को NoSuchFileException फेंकने की उम्मीद है?
मैं गायब फाइलों और अन्य आईओ मुद्दों के कारण असफलताओं के बीच अंतर करने में सक्षम होना चाहता हूं, लेकिन ऐसा लगता है कि यह संभव होने की गारंटी नहीं है।
Files.exists()
पर कॉल करने का विकल्प और जैसे ही दो संचालन के बीच फ़ाइल बनाई गई है, जैसे पहले से ही एक दौड़-स्थिति को जोखिम देता है।
क्या मुझे उम्मीद है कि Files
में NoSuchFileException
उचित हो सकता है? यदि हां, तो यह कहां दस्तावेज है? यदि नहीं, तो मैं लापता फ़ाइल के कारण विफलता को सुरक्षित रूप से कैसे निर्धारित कर सकता हूं?
उदाहरण: विंडोज 7 पर जावा 7.0.02 साथ Files.readAllLines()
विधि एक NoSuchFileException
बढ़ा है, हालांकि यह स्पष्ट रूप से ऐसा करने के लिए दस्तावेज नहीं कर रहा है:
Files.readAllLines(Paths.get("foo"), StandardCharsets.UTF_8)
java.nio.file.NoSuchFileException: foo at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79) at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:229) at java.nio.file.Files.newByteChannel(Files.java:315) at java.nio.file.Files.newByteChannel(Files.java:361) at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:380) at java.nio.file.Files.newInputStream(Files.java:106) at java.nio.file.Files.newBufferedReader(Files.java:2660) at java.nio.file.Files.readAllLines(Files.java:2993)
मैं बाकी एपीआई के बारे में पूछ रहा हूं, न केवल 'हटाएं() '/' deleteIfExists() 'विधियों को हटाएं। बाकी एपीआई (उदा। 'ReadAllLines() ') दस्तावेज नहीं करता है कि यह' NoSuchFileException' उठाता है, भले ही ऐसा लगता है (कम से कम विंडोज़ पर)। यहां तक कि 'हटाएं()' यह इंगित करता है कि यह एक वैकल्पिक अपवाद है, यह बताता है कि कॉलर्स इस व्यवहार पर भरोसा नहीं कर सकते हैं। – dimo414