2011-08-09 10 views
65

मैं फ़ाइल 'ए' की सामग्री को 'बी' फ़ाइल में कॉपी करना चाहता हूं। प्रतिलिपि बनाने के बाद मैं फ़ाइल 'ए' की सामग्री को साफ़ करना चाहता हूं और इसकी शुरुआत से इसे लिखना चाहता हूं। मैं फ़ाइल 'ए' को हटा नहीं सकता क्योंकि यह किसी अन्य कार्य से संबंधित है।खुद को हटाने के बिना टेक्स्ट फ़ाइल की सामग्री को कैसे हटाएं

मैं जावा की फ़ाइल एपीआई (readLine()) का उपयोग कर सामग्री की प्रतिलिपि बनाने में सक्षम था, लेकिन फ़ाइल की सामग्री को साफ़ करने और फ़ाइल पॉइंटर को फ़ाइल की शुरुआत में सेट करने के बारे में नहीं पता था।

उत्तर

99

बस फ़ाइल में कोई रिक्त स्ट्रिंग प्रिंट के बाद श्रेणी RandomAccessFile कक्षा में setLength() विधि।

+14

लेखन आवश्यक नहीं है, और यदि कोई अन्य कार्य फ़ाइल खोलने के लिए खुला हो तो भी संभव नहीं हो सकता है। – EJP

+0

लेखक.क्लोस ??, हम 2017 में हैं !!! इसके अलावा, प्रिंट करने की कोई आवश्यकता नहीं है (""), क्योंकि पाठ को – FSm

+1

@ एंड्रो ओवरराइट किया जाएगा, टाइमस्टैम्प और टैग नोटिस करें? फिर मुझे याद है कि एंड्रॉइड उपकरणों में एक फ़ाइल खाली करने का यह सबसे विश्वसनीय तरीका था। – Vlad

2

फ़ाइल में एक खाली स्ट्रिंग लिखें, फ्लश करें और बंद करें। सुनिश्चित करें कि फ़ाइल लेखक संलग्न मोड में नहीं है। मुझे लगता है कि चाल चलाना चाहिए।

13

सरल, कुछ भी नहीं लिखें!

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

-1: java.lang.String एक toByteArray() विधि नहीं है, न तो 6 और न ही 7 में http://docs.oracle.com/javase/6/docs/api/java/लैंग/स्ट्रिंग। –

+0

यह लंबे समय तक मौजूद है: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#getBytes() – kmas

+1

लेखन यहां अनावश्यक है। – EJP

4

एक से कॉपी एक फिर से मोड लिखने के लिए फ़ाइल खोलने बी और उसके बाद खाली स्ट्रिंग लिखने के लिए यह

25

आप चाहते हैं:

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

यह वास्तव में एकमात्र सही उत्तर है, क्योंकि यह फ़ाइल को हटा नहीं देता है। अन्य सभी उत्तर करते हैं। – EJP

+0

मुझे इसकी आवश्यकता है क्योंकि मैं [logback-android] (https://github.com/tony19/logback-android) लाइब्रेरी द्वारा बनाई गई लॉग फ़ाइल को साफ़ करना चाहता हूं। यदि मैं मैन्युअल रूप से लॉग फ़ाइल को हटा देता हूं, तो लाइब्रेरी पर्याप्त रूप से चालाक नहीं है जब तक कि मेरे ऐप को फिर से लॉन्च न करने तक लॉग लिखने के लिए लॉग इन किया जाए। इसलिए, मैंने इस विधि और काम का उपयोग किया। मैंने ज्यादा अध्ययन नहीं किया है। क्या यह सबसे अच्छा तरीका नहीं है? कृपया सलाह दें। – Yeung

+0

मजेदार, मेरे पास एक उत्पादन समस्या है क्योंकि Itenso कार्ड क्लास 10 फ्रीज (और बल बैटरी रीसेट) जब मैं .apk फ़ाइल से स्थापित ऐप के लिए fileOnSdCard.setLength (0) पर कॉल करता हूं। उनके वर्ग 4 कार्ड ने कभी भी इस मुद्दे को नहीं दिखाया। – Poutrathor

-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

यह एक खाली फ़ाइल नहीं बनाता है, यह एक फ़ाइल बनाता है जिसमें एक शून्य बाइट है। – EJP

2

एक सामान्य विधि लिख सकते हैं बस लिखें:

FileOutputStream writer = new FileOutputStream("file.txt"); 
48

मैं नहीं मानता कि आप भी करने के लिए है फ़ाइल में एक खाली स्ट्रिंग लिखें।

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

+8

आप इसके बारे में सही हैं। लिखने वाले सभी उत्तर गलत हैं या सर्वोत्तम अनावश्यक हैं। – EJP

+15

केवल 'नया प्रिंटवाइटर ("filepath.txt") के बारे में कैसे।(); बंद करें? – Supuhstar

+1

जावा डॉक्स से उद्धरण "यदि फ़ाइल मौजूद है तो इसे शून्य आकार में छोटा कर दिया जाएगा" – BrettG

3

जावा के लिए सबसे अच्छा साथी से एक Apache Projects है और यह का उल्लेख करें। फ़ाइल से संबंधित ऑपरेशन के लिए आप Commons IO प्रोजेक्ट का संदर्भ ले सकते हैं।

नीचे एक लाइन कोड हमें फ़ाइल को खाली करने में मदद करेगा।

FileUtils.write(new File("/your/file/path"), "") 
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); 

सच FileWriter निर्माता में संलग्न सक्षम हो जाएगा याद रखें सकते हैं।

3

कैसे नीचे के बारे में: जावा प्रलेखन पर

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

अधिक जानकारी उपलब्ध:

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

आप उपयोग करने की आवश्यकता नहीं है, तो इसके बाद लेखक इसे करने का सबसे छोटा और साफ तरीका ऐसा होगा:

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

हाय, आप अपने कोड को –

+0

पढ़ने में आसान बनाने के लिए {} का उपयोग कर सकते हैं SO में आपका स्वागत है! अपने कोड को पढ़ने में आसान बनाने के लिए कृपया अंतर्निहित स्वरूपण टूल का उपयोग करें। –

संबंधित मुद्दे