जावा का createNewFile () - क्या यह निर्देशिका भी बनाएगा?


85

मुझे जाँच करने के लिए एक सशर्त मिला है कि क्या कार्यवाही से पहले एक निश्चित फ़ाइल मौजूद है ( ./logs/error.log)। अगर यह नहीं मिला है तो मैं इसे बनाना चाहता हूं। हालांकि, होगा

File tmp = new File("logs/error.log");
tmp.createNewFile();

यह भी बनाएं logs/कि क्या यह मौजूद नहीं है?

जवाबों:


188

सं
उपयोग tmp.getParentFile().mkdirs()करने से पहले आप फ़ाइल बनाएँ।


उफ़। मैं "tmp.mkdirs ()" का उपयोग कर रहा था। यही कारण है कि मेरी फाइल को एक फ़ोल्डर के रूप में बनाया जा रहा था
गेब्रियलबी

20
File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();

6
मैं "mkdir" के बजाय "mkdirs" का उपयोग करने का प्रस्ताव करता हूं, इसलिए आपका कोड गैर-मौजूदा पैरेंट फ़ोल्डर भी बना सकता है :)
Nimpo

14
File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

यदि निर्देशिका पहले से मौजूद है, तो कुछ भी नहीं होगा, इसलिए आपको किसी भी चेक की आवश्यकता नहीं है।


8

जावा 8 स्टाइल

Path path = Paths.get("logs/error.log");
Files.createDirectories(path.getParent());

फ़ाइल पर लिखने के लिए

Files.write(path, "Log log".getBytes());

पढ़ने के लिए

System.out.println(Files.readAllLines(path));

पूर्ण उदाहरण

public class CreateFolderAndWrite {

    public static void main(String[] args) {
        try {
            Path path = Paths.get("logs/error.log");
            Files.createDirectories(path.getParent());

            Files.write(path, "Log log".getBytes());

            System.out.println(Files.readAllLines(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3

StringUtils.touch(/path/filename.ext) अब (> = 1.3) भी निर्देशिका और फ़ाइल बनाएँ अगर वे मौजूद नहीं हैं।


1
देर से टिप्पणी को क्षमा करें लेकिन यह अब होना चाहिएFileUtils.touch(new File(file_path))
शार्क

0

नहीं, और यदि logsमौजूद नहीं है तो आप प्राप्त करेंगेjava.io.IOException: No such file or directory

एंड्रॉयड devs के लिए मज़ेदार तथ्य: की पसंद के कॉल Files.createDirectories()और Paths.get()जब मिनट एपीआई 26 समर्थन काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.