জাভা ফাইলআউটপুট স্ট্রিম উপস্থিত না থাকলে ফাইল তৈরি করুন


187

ফাইলআউটপুট স্ট্রিমকে এমনভাবে ব্যবহার করার কোনও উপায় আছে যে কোনও ফাইল (স্ট্রিং ফাইলের নাম) যদি উপস্থিত না থাকে তবে তা কী তা তৈরি করবে?

FileOutputStream oFile = new FileOutputStream("score.txt", false);

উত্তর:


302

FileNotFoundExceptionফাইলটি উপস্থিত না থাকলে এবং তৈরি করা যায় না ( ডক ), এটি একটি নিক্ষেপ করবে তবে এটি যদি এটি করতে পারে তবে এটি তৈরি করবে। নিশ্চিত হওয়ার জন্য আপনার সম্ভবত প্রথমে পরীক্ষা করা উচিত যে ফাইলটি তৈরি করার আগে ফাইলটি উপস্থিত রয়েছে FileOutputStream(এবং এটি তৈরি createNewFile()না করে তৈরি করুন ):

File yourFile = new File("score.txt");
yourFile.createNewFile(); // if file already exists will do nothing 
FileOutputStream oFile = new FileOutputStream(yourFile, false); 

2
যদি ফাইলটি না থাকে তবে আমি কীভাবে একটি খালি .txt ফাইল তৈরি করব?
স্টিফান ডান

3
@ স্টেফানডান createNewFile()পদ্ধতিটি সহ, যেমন আমার উদাহরণে দেখানো হয়েছে
টালনিকোলাস

55
অবস্থাটি নিরর্থক। জাভাডকের মতে , createNewFile()নিজেই পরমাণুভাবে ফাইলটির অস্তিত্ব পরীক্ষা করে।
আজটেক

8
@aztek সম্ভবত আমরা শর্ত ছেড়ে কোড পাঠযোগ্যতা উন্নতি করতে পারে
আন্দ্রেই Chernenko

2
createNewFile()এখানে মোট সময় অপচয়। সিস্টেমটি ইতিমধ্যে এটি করবে। আপনি কেবল এটি দু'বার দেখতে বাধ্য করছেন cing
মার্নুইস অফ লর্ন


23

আপনি একটি খালি ফাইল তৈরি করতে পারেন এটি বিদ্যমান কিনা না ...

new FileOutputStream("score.txt", false).close();

আপনি যদি ফাইলটি উপস্থিত থাকতে চান তবে তা ...

new FileOutputStream("score.txt", true).close();

আপনি যদি কেবল এমন কোনও ডিরেক্টরিতে ফাইল তৈরি করার চেষ্টা করেন যা আপনি নেই।


3
এটি FileNotFoundExceptionউভয় ক্ষেত্রে নিক্ষেপ করে।
মিশ্রিত করুন

21
File f = new File("Test.txt");
if(!f.exists()){
  f.createNewFile();
}else{
  System.out.println("File already exists");
}

এই পাশ fআপনার টু FileOutputStreamকন্সট্রাকটর।


2
এখানে একটি রেসের শর্ত রয়েছে ... নিম্নলিখিত হিসাবে এটি করা আরও ভাল: ফাইল এফ = নতুন ফাইল ("টেস্ট.টেক্সট"); যদি (! f.createNewFile ())। System.out.println ("ফাইল ইতিমধ্যে বিদ্যমান"); }
মানবতা

19

একা লাইনে এটি অর্জনের জন্য অ্যাপাচি কমন্স থেকে ফাইল ইউটিলগুলি একটি দুর্দান্ত উপায়।

FileOutputStream s = FileUtils.openOutputStream(new File("/home/nikhil/somedir/file.txt"))

এটি যদি অস্তিত্ব না থাকে তবে প্যারেন্ট ফোল্ডার তৈরি করবে এবং উপস্থিত না থাকলে একটি ফাইল তৈরি করবে এবং যদি ফাইল অবজেক্ট ডিরেক্টরি হয় বা এতে লিখিত না হতে পারে তবে একটি ব্যতিক্রম ছুঁড়ে দেবে। এটি সমান :

File file = new File("/home/nikhil/somedir/file.txt");
file.getParentFile().mkdirs(); // Will create parent directories if not exists
file.createNewFile();
FileOutputStream s = new FileOutputStream(file,false);

উপরের সমস্ত অপারেশন একটি ব্যতিক্রম ছুঁড়ে ফেলবে যদি বর্তমান ব্যবহারকারীর অপারেশন করার অনুমতি না দেওয়া হয়।


4

উপস্থিত না থাকলে ফাইল তৈরি করুন। যদি ফাইলটি প্রস্থান করে তবে এর বিষয়বস্তু সাফ করুন:

/**
 * Create file if not exist.
 *
 * @param path For example: "D:\foo.xml"
 */
public static void createFile(String path) {
    try {
        File file = new File(path);
        if (!file.exists()) {
            file.createNewFile();
        } else {
            FileOutputStream writer = new FileOutputStream(path);
            writer.write(("").getBytes());
            writer.close();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

2

পাথ এবং ফাইল ব্যবহার না করে কেবল ফাইল তৈরির বিকল্প উপায় প্রদান করা।

Path path = Paths.get("Some/path/filename.txt");
Files.createDirectories(path.getParent());
if( !Files.exists(path))
    Files.createFile(path);
Files.write(path, ("").getBytes());

0

FileNotFoundExceptionফাইলটি উপস্থিত না থাকলে আপনি সম্ভাব্যভাবে একটি পেতে পারেন।

জাভা ডকুমেন্টেশন বলেছেন:

কোনও ফাইল উপলব্ধ কিনা বা তৈরি করা যায় তা অন্তর্নিহিত প্ল্যাটফর্মের উপর নির্ভর করে http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

আপনি যদি জাভা 7 ব্যবহার করেন তবে আপনি java.nio প্যাকেজটি ব্যবহার করতে পারেন:

অপশন প্যারামিটারটি ফাইলটি কীভাবে তৈরি বা খোলার তা সুনির্দিষ্ট করে ... এটি লেখার জন্য ফাইলটি খোলে, উপস্থিত না থাকলে ফাইল তৈরি করে ...

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html


0

new FileOutputStream(f) বেশিরভাগ ক্ষেত্রে একটি ফাইল তৈরি করবে, তবে দুর্ভাগ্যক্রমে আপনি একটি ফাইলনটফাউন্ডএক্সসেপশন পাবেন

যদি ফাইলটি বিদ্যমান থাকে তবে নিয়মিত ফাইলের পরিবর্তে ডিরেক্টরি হয় তবে এটি বিদ্যমান না তবে তৈরি করা যায় না, বা অন্য কোনও কারণে খোলা যায় না

জাভাদোক থেকে

আমি অন্য কথা, আপনি ফাইলনটফাউন্ডএক্সসেপশন অর্থ "আপনার ফাইল তৈরি করতে পারেনি" পেতে পারা যায়, তবে ফাইল তৈরি কেন ব্যর্থ হয়েছে তার কারণ আপনি খুঁজে পেতে সক্ষম হবেন না word

একটি সমাধান হ'ল ফাইল এপিআই-তে যে কোনও কল সরিয়ে ফেলা এবং পরিবর্তে ফাইলস এপিআই ব্যবহার করা কারণ এটি তত ভাল ত্রুটি পরিচালনার সরবরাহ করে। সাধারণত কোনো প্রতিস্থাপন new FileOutputStream(f)সঙ্গে Files.newOutputStream(p)

আপনার ক্ষেত্রে ফাইল এপিআই ব্যবহার করার প্রয়োজন রয়েছে (কারণ আপনি উদাহরণস্বরূপ ফাইল ব্যবহার করে একটি বাহ্যিক ইন্টারফেস ব্যবহার করেন), Files.createFile(p)আপনার ফাইলটি সঠিকভাবে তৈরি হয়েছে তা নিশ্চিত করার একটি ভাল উপায় এবং যদি তা না হয় তবে আপনি কেন জানেন না যে এটি কাজ করে না। কিছু লোক উপরে মন্তব্য করেছেন যে এটি অনর্থক। এটি সত্য, তবে আপনি আরও ভাল ত্রুটি পরিচালনা করছেন যা কিছু ক্ষেত্রে প্রয়োজনীয় হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.