我正在开发一个应用程序,该应用程序将手机中的 .txt 文件作为输入并将其打印在 TextView 上,
public class MainActivity extends AppCompatActivity {
Button button;
Intent intent;private StringBuilder text = new StringBuilder();
private InputStream getResources(String s) {
return null;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/plain");
startActivityForResult(intent, 7);
Log.v("###", "parent " + getParent());
}
});
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String Fpath = data.getDataString();
// final String fileName = ""+Fpath;
Log.v("###", "yo " +Fpath);
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 7:
if (resultCode == RESULT_OK) {
setContentView(R.layout.activity_main);
Log.v("###", "hellow");
setContentView(R.layout.activity_main);
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt")));
//change code
// do reading
String mLine;
while ((mLine = reader.readLine()) != null) {
text.append(mLine);
text.append('\n');
}
} catch (IOException e) {
String PathHolder = data.getData().getPath();
Toast.makeText(MainActivity.this, PathHolder, Toast.LENGTH_LONG).show();
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
TextView output = (TextView) findViewById(R.id.Txt);
output.setText((CharSequence) text);
}
}
}
}
}
一切都很好,但线路
new InputStreamReader(getAssets().open("filename.txt")));
从 Assets 文件夹中获取文件, 帮我从我的手机中获取文件,
Assets 文件夹中的文件正确打开,但我希望从我的手机中选择它
最佳答案
您可以在onActivityResult
中获取您从文件管理器中选择的文件路径。
Uri PathHolder = data.getData();
更新
上面的行给出了您从存储中选择的文件的uri。然后你就可以轻松地从该 Uri 获取文件。
刚刚忘记了getAssets
使用以下方法从文件中读取。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Uri PathHolder = data.getData();
FileInputStream fileInputStream = null;
StringBuilder text = new StringBuilder();
try {
InputStream inputStream = getContentResolver().openInputStream(PathHolder);
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
String mLine;
while ((mLine = r.readLine()) != null) {
text.append(mLine);
text.append('\n');
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
关于java - Android - 使用 Intent 从手机内存中打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52713245/