我有问题,我无法使用我的Android应用程序写入现有文件。按下按钮一次,创建文件并将行写入其中。但是在那之后按下按钮将无济于事。我真的找不到错误。
String filePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + File.separator + "test.txt";
在创建时,我会请求权限,这些权限也在manifest.xml中设置
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};
requestPermissions(permissions,1);
我的点击功能:
View.OnClickListener myhandler2 = new View.OnClickListener() {
public void onClick(View v) {
try {
final Path path = Paths.get(filePath);
Files.write(path, Arrays.asList("line"), StandardCharsets.UTF_8,
Files.exists(path) ? StandardOpenOption.APPEND : StandardOpenOption.CREATE);
} catch (final IOException e) {
}
多次单击按钮并在单独的编辑器中打开文件后,仅显示第一行。但是Files.readAllLines(path).toString()显示了所有内容。
**编辑:**好,代码就像一个超级按钮。我已将手机插入计算机,并且仅当创建新文件时,刷新Windows下的目录才会显示。仅在拔出并重新连接手机后,文件更改才可见。有人对此行为有解释吗? ** EDIT2:**我使用Windows资源管理器导航到该文件,并使用texteditor打开了该文件。更改不可见。但是,使用android studio设备文件浏览器中的构建(查看>工具窗口>设备文件资源管理器)并在android studio中打开文件显示了所有更改。
答案 0 :(得分:0)
您的代码吞没了可能包含错误原因的异常:
将此添加到您的应用中,然后查看错误消息是什么
} catch (final Exception e) {
// could be SecurityException some permission issu, IOException i.e file locked, invalid filePath
Log.e("MyApName", "cannot append to '" + filePath+
"'", e);
}