如何从片段中的资产中读取文本文件?

时间:2014-11-23 18:45:56

标签: android file text fragment assets

我应该如何阅读assets的文字文件?

我在这里使用片段。 看起来我无法使用getAssets();的任何内容,因为我得到:Error:(88, 37) error: cannot find symbol method getAssets()目标是能够读/写几个字符串。

例如:

AssetManager assetManager = getAssets();
InputStream inputStream = null;
try {
    inputStream = assetManager.open("hello.txt");
}
catch (IOException e){
    Log.e("message: ",e.getMessage());
}

我希望能够在一个地方读取值,然后在代码的另一个位置写入值。请帮助,我绝望,我在网上找到的任何东西都在工作

5 个答案:

答案 0 :(得分:3)

getAssets()Context上的一种方法。您可以在getActivity()上致电Fragment,然后拨打getAssets()

答案 1 :(得分:3)

 public String loadTextFileFromAsset() {
    String content = null;
    try {

        InputStream is = getContext().getAssets().open("dora.txt");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        content = new String(buffer,"UTF-8");
    } catch (IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return content;
}

在src / main / assets文件夹中添加文本文件(比如dora.txt)

答案 2 :(得分:0)

试试这个课程

import android.content.Context;
import android.content.res.AssetManager;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class DummyDataReader {
    Context context;

    public DummyDataReader(Context context) {
        this.context = context;
    }

    public String ReadTextFromFile(String file) {
        String data = "";
        AssetManager assetManager = context.getResources().getAssets();
        InputStream inputStream = null;
        try {
            inputStream = assetManager.open(file);
            StringBuilder buf = new StringBuilder();
            BufferedReader in =
                    new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
            String str;
            while ((str = in.readLine()) != null) {
                buf.append(str);
            }
            in.close();
            data = buf.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return data;
    }

}

要阅读文件,请使用此功能

String response = new DummyDataReader(getActivity()).ReadTextFromFile("hello.txt");

答案 3 :(得分:0)

使用上面的Devendra Dora的例子,我发现以大写字母开头的资产子目录名称将不起作用。将子目录名称更改为全部小写就像魅力一样。 Android Studio 3.1.2没有抱怨我一直使用的大写命名(无济于事)但这个例子帮助我解决了我的问题。谢谢!

答案 4 :(得分:0)

public class Tab3 extends  Fragment {
    private TextView textView;
    private StringBuilder text = new StringBuilder();

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        String content = null;
        try {

            InputStream is = getActivity().getAssets().open("i.txt");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            content = new String(buffer,"UTF-8");
        } catch (IOException ex) {
            ex.printStackTrace();
            Log.d("error","error");
        }


            TextView output= (TextView)getView().findViewById(R.id.editText2);
            output.setText(content);

        }



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab_3, container, false);
         return rootView;
    }
}

这就是我在选项卡式活动中所做的。


,请注意将资产文件放在:\ appname \ app \ src \ main \ assets