নিজেকে মোছা না করে টেক্সট ফাইলের সামগ্রী কীভাবে মুছবেন


90

আমি 'এ' ফাইলের বিষয়বস্তু 'বি' ফাইল করতে কপি করতে চাই। অনুলিপিটি শেষ হওয়ার পরে আমি ফাইল 'এ' এর সামগ্রীটি সাফ করতে চাই এবং এর শুরু থেকেই এটিতে লিখতে চাই। আমি 'এ' ফাইলটি মুছতে পারি না কারণ এটি অন্য কোনও কাজের সাথে সম্পর্কিত।

আমি জাভা ফাইল এপিআই (রিডলাইন ()) ব্যবহার করে সামগ্রীটি অনুলিপি করতে সক্ষম হয়েছি, তবে কীভাবে ফাইলের বিষয়বস্তু সাফ করবেন এবং ফাইলের শুরুতে ফাইল পয়েন্টার সেট করবেন তা জানেন না।

উত্তর:


136

কেবল ফাইলটিতে একটি খালি স্ট্রিং মুদ্রণ করুন:

PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();

14
লেখার প্রয়োজন নেই, এবং অন্য কোনও কাজে ফাইলটি ওপেন থাকলে খোলাও সম্ভব নাও হতে পারে।
ব্যবহারকারী 207421

Writer.close ??, আমরা 2017 এ আছি !!!। এছাড়াও, ("") মুদ্রণের দরকার নেই, কারণ পাঠ্যটি ওভাররাইট করা হবে
এফএসএম

4
@ এন্ড্রো, টাইমস্ট্যাম্প এবং ট্যাগগুলি লক্ষ্য করুন? তারপরে আমি মনে করি অ্যান্ড্রয়েড ডিভাইস জুড়ে কোনও ফাইল খালি করা এটি সবচেয়ে নির্ভরযোগ্য উপায়।
ভ্লাদ

@ ভ্লাদ যদি এখন লেখককে বন্ধ করার দরকার না পড়ে তবে উত্তরটি আপডেট করার পক্ষে এটি কি ভাল ধারণা?
লাইন

73

আমি বিশ্বাস করি না যে এমনকি আপনাকে ফাইলটিতে একটি খালি স্ট্রিং লিখতে হবে।

PrintWriter pw = new PrintWriter("filepath.txt");
pw.close();

9
আপনি যে সম্পর্কে সঠিক। একটি লিখন দেখানো সমস্ত উত্তর ভুল বা সেরা রিডান্ট্যান্ট।
ব্যবহারকারী 207421

35
ঠিক কীভাবে new PrintWriter("filepath.txt").close();?
বেন লেগিগেরো

4
জাভা ডক্স থেকে উদ্ধৃতি "যদি ফাইলটি বিদ্যমান থাকে তবে এটি শূন্য আকারে কাটা হবে"
পিঙ্কারটন

4
তবে ফাইলটি অ্যাডেন্ড মোডে থাকলে কী করবেন।
গুরমিত সিং

ওহ মানুষ আমি বিশ্বাস করতে পারি না আমি সহজ উত্তরটি মিস করেছি। ট্র্যাঙ্কেট মোডে ফাইলটি খুলুন। আমি কাটা কাটা মোডকে এত ঘৃণা করি যে এটি আমার পিছলে যায়।

30

আপনি র‌্যান্ডমএকসেসফাইল শ্রেণিতে সেটলেন্থ () পদ্ধতিটি চান।


4
এটি আসলে একমাত্র সঠিক উত্তর, কারণ এটি ফাইলটি মুছে না delete অন্য সমস্ত উত্তর আছে।
ব্যবহারকারী 207421

আমার এটি দরকার কারণ আমি লগব্যাক-অ্যান্ড্রয়েড লাইব্রেরি দ্বারা নির্মিত লগ ফাইল সাফ করতে চাই । আমি যদি লগ ফাইলটি ম্যানুয়ালি মুছে ফেলি, তবে আমার অ্যাপ্লিকেশনটি পুনরায় চালু না করা পর্যন্ত লেখার জন্য লগ আছে যদি গ্রন্থাগারটি পুনরায় তৈরি করা যথেষ্ট চালাক হয় না। অতএব, আমি এই পদ্ধতি এবং কাজটি ব্যবহার করেছি। আমি বেশি পড়াশোনা করি না। এটা কি সেরা পন্থা নয়? আপনার পরামর্শ দিন.
ইয়েং

মজাদারভাবে, আমার একটি প্রোডাকশন সমস্যা রয়েছে কারণ আমি যখন .apk ফাইল থেকে ইনস্টল করা অ্যাপ্লিকেশনটির জন্য ফাইলঅনএসডিকার্ড.সেটলেন্থ (0) কল করি তখন ইনটেনো কার্ড ক্লাস 10 টি ফ্রিজ (এবং জোর করে ব্যাটারি রিসেট করা হয়)। তাদের ক্লাস 4 কার্ডটি কখনই সমস্যাটি দেখায় নি।
পুত্রাথোর

17

সরল, কিছু লেখো না!

FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();

4
-1: java.lang.String একটি toByteArray () মেথড, তন্ন তন্ন 6 কিংবা 7 নেই docs.oracle.com/javase/6/docs/api/java/lang/String
james.garriss

4
এটি একটি দীর্ঘ সময়ের জন্য বিদ্যমান: ডকসস.ওরাকল.com
জাভাসে

4
লেখাটি এখানে অপ্রয়োজনীয়।
ব্যবহারকারী 207421

11

কাটা কাটা অপারেশন করার জন্য একটি লাইনার:

FileChannel.open(Paths.get("/home/user/file/to/truncate"), StandardOpenOption.WRITE).truncate(0).close();

জাভা ডকুমেন্টেশনে আরও তথ্য উপলভ্য: https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html


+1 একটি সম্পূর্ণ ফাইল রাইটিং ক্লাস ইনস্ট্যান্ট না করার জন্য, (এবং এটিতে আরও খারাপ লেখা)। এটি সত্যই গ্রহণযোগ্য উত্তর হওয়া উচিত।
ক্রু

6

নীচে সম্পর্কে:

File temp = new File("<your file name>");
if (temp.exists()) {
    RandomAccessFile raf = new RandomAccessFile(temp, "rw");
    raf.setLength(0);
}

5

A থেকে B কে অনুলিপি করার পরে A ফাইলটি আবার মোডে লিখুন এবং তারপরে খালি স্ট্রিং লিখুন


5

জাভা জন্য অন্যতম সেরা সহযোগী হ'ল অ্যাপাচি প্রকল্পসমূহ এবং দয়া করে এটি উল্লেখ করুন। ফাইল সম্পর্কিত ক্রিয়াকলাপের জন্য আপনি কমন্স আইও দেখুন to প্রকল্পটি ।

এক লাইনের কোডের নীচে ফাইলটি খালি করতে আমাদের সহায়তা করবে।

FileUtils.write(new File("/your/file/path"), "")


2

ফাইলটিতে একটি খালি স্ট্রিং লিখুন, ফ্লাশ এবং বন্ধ করুন। নিশ্চিত করুন যে ফাইল লেখক অ্যাপেনড-মোডে নেই। আমি মনে করি যে কৌশলটি করা উচিত।


2

আপনার যদি লেখককে পরে ব্যবহার করার প্রয়োজন না হয় তবে এটি করার সবচেয়ে সংক্ষিপ্ত এবং পরিষ্কার উপায়টি এরকম হবে:

new FileWriter("/path/to/your/file.txt").close();

1

ব্যবহার করুন: নতুন জাভা 7 এনআইও গ্রন্থাগার, চেষ্টা করুন

        if(!Files.exists(filePath.getParent())) {
            Files.createDirectory(filePath.getParent());
        }
        if(!Files.exists(filePath)) {
            Files.createFile(filePath);
        }
        // Empty the file content
        writer = Files.newBufferedWriter(filePath);
        writer.write("");
        writer.flush();

উপরের কোডটি ডিরেক্টরিটি তৈরি না করে ডিরেক্টরিতে উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখায়, ফাইলটি উপস্থিত আছে কিনা তা পরীক্ষা করে হ্যাঁ এটি ফাঁকা স্ট্রিং লিখেছে এবং বাফারকে ফ্লাশ করে, শেষে আপনি লেখককে খালি ফাইলের দিকে ইশারা করলেন


0

তুমি ব্যবহার করতে পার

FileWriter fw = new FileWriter(/*your file path*/);
PrintWriter pw = new PrintWriter(fw);
pw.write("");
pw.flush(); 
pw.close();

ব্যবহার করবেন না মনে রাখবেন

FileWriter fw = new FileWriter(/*your file path*/,true);

ফাইল রাইটার কনস্ট্রাক্টরের মধ্যে সত্যই অ্যাপেন্ড সক্ষম করে।


0
FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE);
FileWriter fw = new FileWriter(fos.getFD());
fw.write("");

তাই আপনাকে স্বাগতম! আপনার কোডটি পড়া সহজ করার জন্য দয়া করে অন্তর্নির্মিত ফর্ম্যাটিং সরঞ্জামগুলি ব্যবহার করুন।
মাইকেল এল।

0

রিসোর্স-উইথ রিসোর্স সহ লেখক স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে:

import org.apache.commons.lang3.StringUtils;
final File file = new File("SomeFile");
try (PrintWriter writer = new PrintWriter(file))  {
    writer.print(StringUtils.EMPTY);                
}
// here we can be sure that writer will be closed automatically

0

আপনাকে যা করতে হবে তা হ'ল কাটা মোডে ফাইল খুলুন open যে কোনও জাভা ফাইল আউট ক্লাস স্বয়ংক্রিয়ভাবে আপনার জন্য এটি করবে।


-2

আপনি জেনেরিক পদ্ধতিটি লিখতে পারেন (এটির দেরীতে তবে নীচের কোডটি আপনাকে / অন্যদের সহায়তা করবে)

public static FileInputStream getFile(File fileImport) throws IOException {
      FileInputStream fileStream = null;
    try {
        PrintWriter writer = new PrintWriter(fileImport);
        writer.print(StringUtils.EMPTY);
        fileStream = new FileInputStream(fileImport);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            writer.close();
        }
         return fileStream;
}

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