我应该如何阅读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());
}
我希望能够在一个地方读取值,然后在代码的另一个位置写入值。请帮助,我绝望,我在网上找到的任何东西都在工作
答案 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;
}
}
这就是我在选项卡式活动中所做的。