অ্যান্ড্রয়েডে কীভাবে একটি ফাইল তৈরি করবেন?


126

কীভাবে একটি ফাইল তৈরি করবেন, এতে ডেটা লিখবেন এবং এন্ড্রয়েড থেকে ডেটা পড়বেন? সম্ভব হলে একটি কোড স্নিপেট সরবরাহ করুন।


3
এই লিঙ্কটি দেখুন এটিতে ফাইলগুলি থেকে কীভাবে লিখতে এবং পড়তে হয় তার টিউটোরিয়াল অনুসরণ করার সহজ উপায় রয়েছে।
প্রশস্ত

উত্তর:


57

এখান থেকে: http://www.anddev.org/working_with_files-t115.html

//Writing a file...  



try { 
       // catches IOException below
       final String TESTSTRING = new String("Hello Android");

       /* We have to use the openFileOutput()-method
       * the ActivityContext provides, to
       * protect your file from others and
       * This is done for security-reasons.
       * We chose MODE_WORLD_READABLE, because
       *  we have nothing to hide in our file */             
       FileOutputStream fOut = openFileOutput("samplefile.txt",
                                                            MODE_PRIVATE);
       OutputStreamWriter osw = new OutputStreamWriter(fOut); 

       // Write the string to the file
       osw.write(TESTSTRING);

       /* ensure that everything is
        * really written out and close */
       osw.flush();
       osw.close();

//Reading the file back...

       /* We have to use the openFileInput()-method
        * the ActivityContext provides.
        * Again for security reasons with
        * openFileInput(...) */

        FileInputStream fIn = openFileInput("samplefile.txt");
        InputStreamReader isr = new InputStreamReader(fIn);

        /* Prepare a char-Array that will
         * hold the chars we read back in. */
        char[] inputBuffer = new char[TESTSTRING.length()];

        // Fill the Buffer with data from the file
        isr.read(inputBuffer);

        // Transform the chars to a String
        String readString = new String(inputBuffer);

        // Check if we read back the same chars that we had written out
        boolean isTheSame = TESTSTRING.equals(readString);

        Log.i("File Reading stuff", "success = " + isTheSame);

    } catch (IOException ioe) 
      {ioe.printStackTrace();}

12
ফাইলটি কোথায় লেখা হবে?
হেমন্ত মেটালিয়া

4
"/data/data/your_project_package_structure/files/samplefile.txt"
Petar

2
আপনার flushআগে কল করার দরকার আছে close?
মিস্টার_আর_আমস_ডি

1
না, flushতা নিরর্থক। ডক্স অনুসারে, কলিংটি প্রথম closeসঞ্চালন করবে flushdocs.oracle.com/javase/6/docs/api/java/io/…
এলিয়ট

2
MODE_WORLD_READABL এটিকে ব্যবহার করার চেষ্টা করার পরে আমি যা পেয়েছিলাম তা হ্রাস পেয়েছে
Alaa

53

বাইট লেখার জন্য অস্থায়ী ফাইল তৈরি করতে আমি নীচের কোডটি ব্যবহার করেছি। এবং এটি কাজ করে।

File file = new File(Environment.getExternalStorageDirectory() + "/" + File.separator + "test.txt");
file.createNewFile();
byte[] data1={1,1,0,0};
//write the bytes in file
if(file.exists())
{
     OutputStream fo = new FileOutputStream(file);              
     fo.write(data1);
     fo.close();
     System.out.println("file created: "+file);
}               

//deleting the file             
file.delete();
System.out.println("file deleted");

9

আমি এই থ্রেড থেকে এমন একটি ক্লাস লেখার সিদ্ধান্ত নিয়েছি যা অন্যের পক্ষে সহায়ক হতে পারে। দ্রষ্টব্য যে এটি বর্তমানে "ফাইল" ডিরেক্টরিতে লেখার উদ্দেশ্যে করা হয়েছে (উদাঃ "এসডিকার্ড" পাথগুলিতে লেখেন না)।

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import android.content.Context;

public class AndroidFileFunctions {

    public static String getFileValue(String fileName, Context context) {
        try {
            StringBuffer outStringBuf = new StringBuffer();
            String inputLine = "";
            /*
             * We have to use the openFileInput()-method the ActivityContext
             * provides. Again for security reasons with openFileInput(...)
             */
            FileInputStream fIn = context.openFileInput(fileName);
            InputStreamReader isr = new InputStreamReader(fIn);
            BufferedReader inBuff = new BufferedReader(isr);
            while ((inputLine = inBuff.readLine()) != null) {
                outStringBuf.append(inputLine);
                outStringBuf.append("\n");
            }
            inBuff.close();
            return outStringBuf.toString();
        } catch (IOException e) {
            return null;
        }
    }

    public static boolean appendFileValue(String fileName, String value,
            Context context) {
        return writeToFile(fileName, value, context, Context.MODE_APPEND);
    }

    public static boolean setFileValue(String fileName, String value,
            Context context) {
        return writeToFile(fileName, value, context,
                Context.MODE_WORLD_READABLE);
    }

    public static boolean writeToFile(String fileName, String value,
            Context context, int writeOrAppendMode) {
        // just make sure it's one of the modes we support
        if (writeOrAppendMode != Context.MODE_WORLD_READABLE
                && writeOrAppendMode != Context.MODE_WORLD_WRITEABLE
                && writeOrAppendMode != Context.MODE_APPEND) {
            return false;
        }
        try {
            /*
             * We have to use the openFileOutput()-method the ActivityContext
             * provides, to protect your file from others and This is done for
             * security-reasons. We chose MODE_WORLD_READABLE, because we have
             * nothing to hide in our file
             */
            FileOutputStream fOut = context.openFileOutput(fileName,
                    writeOrAppendMode);
            OutputStreamWriter osw = new OutputStreamWriter(fOut);
            // Write the string to the file
            osw.write(value);
            // save and close
            osw.flush();
            osw.close();
        } catch (IOException e) {
            return false;
        }
        return true;
    }

    public static void deleteFile(String fileName, Context context) {
        context.deleteFile(fileName);
    }
}

1
আমি আপনার কোডটি যাচাই করেছি তবে কিছু কমান্ড রয়েছে যা নতুন এপিআই (17) এর জন্য অবমাননা করা হয়েছে: প্রসঙ্গ।
ভিক্টর গিল

4
অবহেলিত বিটগুলি বাদে - আপনাকে অবশ্যই শেষ অবধি বন্ধ করতে হবে এবং কাছে যাওয়ার আগে আপনার ফ্লাশ করার দরকার নেই। দয়া করে
ঝাপটায়

4

একটি ফাইল পরীক্ষা লিখুন। Txt:

String filepath ="/mnt/sdcard/test.txt";
FileOutputStream fos = null;
try {
        fos = new FileOutputStream(filepath);
        byte[] buffer = "This will be writtent in test.txt".getBytes();
        fos.write(buffer, 0, buffer.length);
        fos.close();
    } catch (FileNotFoundException e) {
         e.printStackTrace();
    } catch (IOException e) {
         e.printStackTrace();
    }finally{
        if(fos != null)
            fos.close();
    }

File.txt ফাইল থেকে পড়ুন:

String filepath ="/mnt/sdcard/test.txt";        
FileInputStream fis = null;
try {
       fis = new FileInputStream(filepath);
       int length = (int) new File(filepath).length();
       byte[] buffer = new byte[length];
       fis.read(buffer, 0, length);
       fis.close();
    } catch (FileNotFoundException e) {
         e.printStackTrace();
    } catch (IOException e) {
         e.printStackTrace();
    }finally{
        if(fis != null)
            fis.close();
   }

দ্রষ্টব্য: AndroidManLive.xML এ এই দুটি অনুমতি যুক্ত করতে ভুলবেন না

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.