একটি সাধারণ পাঠ্য ফাইল পড়া


115

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

InputStream inputStream = openFileInput("test.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

আমার প্রশ্নগুলি: "test.txt"আমার প্রকল্পে আমার এই ফাইলটি কোথায় রাখা উচিত ? আমি ফাইলটি "res/raw"এবং "asset"ফোল্ডারের নীচে রাখার চেষ্টা করেছি তবে exception "FileNotFound"উপরের লিখিত কোডটির প্রথম লাইভ কার্যকর করা হলে আমি পাই ।

সাহায্যের জন্য ধন্যবাদ

উত্তর:


181

আপনার পাঠ্য ফাইলটি /assetsঅ্যান্ড্রয়েড প্রকল্পের অধীনে ডিরেক্টরিতে রাখুন । AssetManagerএটি অ্যাক্সেস করতে ক্লাস ব্যবহার করুন ।

AssetManager am = context.getAssets();
InputStream is = am.open("test.txt");

অথবা আপনি /res/rawডিরেক্টরিটিতে ফাইলটি রাখতে পারেন , যেখানে ফাইলটি সূচী করা হবে এবং কোনও আইডি দ্বারা আর ফাইলটিতে অ্যাক্সেসযোগ্য:

InputStream is = context.getResources().openRawResource(R.raw.test);

9
এই দুটি পদ্ধতির মধ্যে পারফরম্যান্সের পার্থক্যের বিষয়ে ভাবছিলাম এবং একটি দ্রুত মানদণ্ড কোনও প্রশংসনীয় পার্থক্য দেখায়নি।
রূবেন এল

বেঞ্চমার্ক পরীক্ষার জন্য ব্যবহৃত টেক্সট ফাইলের আকারটি কী এবং আপনি কী আপনার চিত্র ফোল্ডারে এমন চিত্র এবং অন্যান্য সংস্থান রেখেছিলেন যা রিয়েল-টাইম (বাণিজ্যিক / মুক্ত) অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির অনুকরণ করে?
শ্রী রমা

2
আমার "হ্যালো ওয়ার্ল্ড" অ্যাপে আমার "সম্পদ" ফোল্ডার নেই। আমি নিজে তৈরি করা উচিত?
কৌশিক লেলে

2
বিটিডব্লিউ, ডায়ার /assetsঅ্যানড্রইড স্টুডিও 1.2.2 হিসাবে ম্যানুয়ালি যুক্ত করতে হবে। এটি ভিতরে যেতে হবে src/main
জাপাজি রজনীশ

3
@ কৌশিকলেলের মতো যারা, তারা কীভাবে প্রসঙ্গ পেতে পারে তা নিয়ে ভাবছেন; এটি সহজ. কোনও ক্রিয়াকলাপে আপনি কেবল "এই" কীওয়ার্ডটি ব্যবহার করে বা "getCurrentContext ()" পদ্ধতিতে কল করে এটি পেতে পারেন।
অ্যালেক্স

25

এটা চেষ্টা কর,

package example.txtRead;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class txtRead extends Activity {
    String labels="caption";
    String text="";
    String[] s;
    private Vector<String> wordss;
    int j=0;
    private StringTokenizer tokenizer;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        wordss = new Vector<String>();
        TextView helloTxt = (TextView)findViewById(R.id.hellotxt);
        helloTxt.setText(readTxt());
 }

    private String readTxt(){

     InputStream inputStream = getResources().openRawResource(R.raw.toc);
//     InputStream inputStream = getResources().openRawResource(R.raw.internals);
     System.out.println(inputStream);
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

     int i;
  try {
   i = inputStream.read();
   while (i != -1)
      {
       byteArrayOutputStream.write(i);
       i = inputStream.read();
      }
      inputStream.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

     return byteArrayOutputStream.toString();
    }
}

23

আমি এটি এইভাবে করি:

public static String readFromAssets(Context context, String filename) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open(filename)));

    // do reading, usually loop until end of file reading  
    StringBuilder sb = new StringBuilder();
    String mLine = reader.readLine();
    while (mLine != null) {
        sb.append(mLine); // process line
        mLine = reader.readLine();
    }
    reader.close();
    return sb.toString();
}

এটি নিম্নলিখিত হিসাবে ব্যবহার করুন:

readFromAssets(context,"test.txt")

1
ফাইলটির এনকোডিং নির্দিষ্ট করা কার্যকর হতে পারে, উদাহরণস্বরূপ "ইউটিএফ -8" ইনপুট স্ট্রিমরিডার কনস্ট্রাক্টরের দ্বিতীয় প্যারামিটার হিসাবে।
মাকালেলে

7

আপনার assetsফোল্ডারে একটি ফাইল থাকার জন্য আপনাকে assetsফোল্ডার থেকে ফাইলগুলি পেতে এই টুকরো কোডটি ব্যবহার করা দরকার :

yourContext.getAssets().open("test.txt");

এই উদাহরণে, getAssets()একটি AssetManagerউদাহরণ দেয় এবং তারপরে আপনি AssetManagerএপিআই থেকে যা কিছু পদ্ধতি চাইবেন তা ব্যবহার করতে মুক্ত হন ।


5

অ্যান্ড্রয়েডের জন্য মনোতে ....

try
{
    System.IO.Stream StrIn = this.Assets.Open("MyMessage.txt");
    string Content = string.Empty;
    using (System.IO.StreamReader StrRead = new System.IO.StreamReader(StrIn))
    {
      try
      {
            Content = StrRead.ReadToEnd();
            StrRead.Close();
      }  
      catch (Exception ex) { csFunciones.MostarMsg(this, ex.Message); }
      }
          StrIn.Close();
          StrIn = null;
}
catch (Exception ex) { csFunciones.MostarMsg(this, ex.Message); }

3

সম্পদ ফোল্ডারে সংরক্ষিত ফাইলটি পড়তে

public static String readFromFile(Context context, String file) {
        try {
            InputStream is = context.getAssets().open(file);
            int size = is.available();
            byte buffer[] = new byte[size];
            is.read(buffer);
            is.close();
            return new String(buffer);
        } catch (Exception e) {
            e.printStackTrace();
            return "" ;
        }
    }

1
"সহজলভ্য();" নিরাপদ নয়। AssetFileDescriptor ব্যবহার করুন fd = getAssets ()। OpenFd (fileName); int মাপ = (অন্তর্) fd.getLength (); fd.close ();
GBY

0

এখানে একটি সাধারণ শ্রেণি যা উভয় rawএবং assetফাইল উভয়ই পরিচালনা করে:

পাবলিক ক্লাস ReadFromFile F

public static String raw(Context context, @RawRes int id) {
    InputStream is = context.getResources().openRawResource(id);
    int size = 0;
    try {
        size = is.available();
    } catch (IOException e) {
        e.printStackTrace();
        return "";
    }
    return readFile(size, is);
}

public static String asset(Context context, String fileName) {
    InputStream is = null;
    int size = 0;
    try {
        is = context.getAssets().open(fileName);
        AssetFileDescriptor fd = null;
        fd = context.getAssets().openFd(fileName);
        size = (int) fd.getLength();
        fd.close();
    } catch (IOException e) {
        e.printStackTrace();
        return "";
    }
    return readFile(size, is);
}


private static String readFile(int size, InputStream is) {
    try {
        byte buffer[] = new byte[size];
        is.read(buffer);
        is.close();
        return new String(buffer);
    } catch (Exception e) {
        e.printStackTrace();
        return "";
    }
}

}

উদাহরণ স্বরূপ :

ReadFromFile.raw(context, R.raw.textfile);

এবং সম্পদ ফাইলগুলির জন্য:

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