2012-08-29 18 views
8

एप्लिकेशन के आंतरिक संग्रहण में फ़ाइल का नाम बदलने का सबसे अच्छा/आसान तरीका क्या है? मुझे यह थोड़ा अजीब लगता है कि Context.deleteFile() विधि है, लेकिन कोई "चाल" या "नाम बदलें" फ़ंक्शन नहीं है। क्या मुझे फ़ाइल की सामग्री को सहेजने, इसे हटाने, एक नया निर्माण करने और फिर उसमें सामग्री को कॉपी करने के माध्यम से सभी तरह से जाना है? या किसी मौजूदा फ़ाइल पर फ़ाइल कॉपी करने का कोई तरीका है?आंतरिक संग्रहण में फ़ाइल का नाम बदलें

अद्यतन (30 अगस्त, 2012):

प्रति नीचे सुझाव दिया समाधान है, जो मैं काम करने के लिए नहीं मिल सकता है के रूप में:

  • मैं एक फ़ाइल shoppinglists.csv कहा जाता है
  • तब मैं shoppinglists.tmp नामक एक नई फ़ाइल बनाएं, और shoppinglists.csv से सामग्री कॉपी करें और उसमें कुछ नई प्रविष्टियां बनाएं। shoppinglist.tmp फ़ाइल तो shoppinglists.csv को
shoppinglists.csv फ़ाइल
  • तो मैं पुराने shoppinglists.csv फ़ाइल
  • तब मैं shoppinglists.tmp फ़ाइल का नाम बदलना हटाना का एक नया संस्करण है

    ctx.deleteFile("shoppinglists.csv");   <--- delete the old file 
    File oldfile = new File("shoppinglists.tmp"); 
    File newfile = new File("shoppinglists.csv"); 
    oldfile.renameTo(newfile); 
    

    हालांकि, यह काम नहीं करता:

    मैं इस कोशिश की। DeleteFile() के बाद, और कुछ नहीं होता है, और मुझे नई shoppinglists.tmp फ़ाइल के साथ छोड़ दिया गया है।

    मुझे क्या याद आ रही है?

    एनबी: लॉगकैट में कोई त्रुटि या कुछ भी नहीं है।

  • +0

    चेक इस समाधान http://stackoverflow.com/questions/2896733/how-to-rename-filename-in-sdcard-with-android-application –

    उत्तर

    0

    renameTO() (Android संस्करण 2.3 के साथ ग्रहण इंडिगो, AVD) मेरी वातावरण में काम नहीं करता। समाधान अस्थायी फ़ाइल विधि alltogeher को छोड़ना है, क्योंकि किसी भी उचित समय सीमा में हल करना संभव नहीं लगता है।

    0

    आपको फ़ाइल कक्षा के renameTo() विधि का उपयोग करने की आवश्यकता है।

    File testFile = new File ("test.txt"); // Assuming it is in Internal Storage 
    testFile.renameTo ("newTest.txt"); 
    
    +0

    मुझे लगता है कि काम करने के लिए नहीं मिल सकता है - कृपया अद्यतन समस्या विवरण (प्रश्न) देखें। –

    +0

    कोई भी कोई विचार नहीं है? मैं अनुमति मुद्दों को सोच रहा हूं, लेकिन यह थोड़ा अजीब है क्योंकि एप्लिकेशन दोनों नई फ़ाइलों को हटाने और बनाने में सक्षम है, साथ ही उन्हें डेटा भी जोड़ सकता है। यदि मुझे इसका कोई समाधान नहीं मिल रहा है, तो मुझे अस्थायी फ़ाइल को छोड़ना होगा और केवल एक सरणी [] [] को अस्थायी संग्रहण के रूप में उपयोग करना होगा, मूल फ़ाइल को हटाएं, एक नया बनाएं और सरणी डालें [] [] उसमें सामग्री। –

    +0

    नहीं, मुझे इसकी अनुमति समस्या नहीं है, मुझे कोड और व्यक्तिगत रूप से remaneTo() विधि की जांच करने की आवश्यकता हो सकती है। – Lucifer

    5

    कच्चे File कन्स्ट्रक्टर का उपयोग करने के बजाय, Context द्वारा प्रदत्त विधि getFileStreamPath का उपयोग करें। ऐसा कहने के लिए,

    File oldfile = ctx.getFileStreamPath("shoppinglists.tmp"); 
    File newfile = ctx.getFileStreamPath("shoppinglists.csv"); 
    oldfile.renameTo(newfile); 
    
    +0

    समस्या यह है कि 'नई फ़ाइल ("fred")' प्रोग्राम की वर्तमान निर्देशिका से संबंधित किसी नाम को संदर्भित करती है, जो शायद नहीं है, और निश्चित रूप से गारंटी नहीं है, निर्देशिका जिसमें आंतरिक फाइलें संग्रहीत की जाती हैं। – JulianSymes

    0

    मुझे लगता है कि हम आंतरिक संग्रहण वातावरण में File.renameTo() विधि का उपयोग नहीं कर सकते हैं। इस वातावरण में किसी फ़ाइल का नाम बदलना, कर सकता है: - पुरानी फ़ाइल की सामग्री को नई फ़ाइल में कॉपी करें। - पुरानी फ़ाइल हटाएं।

    0
    File file = new File("your old file/folder name"); 
    File file2 = new File("your new file/folder name"); 
    boolean success = file.renameTo(file2); 
    
    संबंधित मुद्दे