Atu*_*yal 13 android windows-explorer filewriter android-sdcard
我通过我的Android程序写了一个文件,如下所示:
String file = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Files/hello.txt";
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(str + "\n"); \\ Yeah, 'str' has a value there
writer.close();
Run Code Online (Sandbox Code Playgroud)
该程序完成其工作并完成.现在我点击Android上的后退按钮关闭应用程序.现在发生的事情是,如果我去Android文件浏览器(如Astro)我可以看到该文件,但如果我在Windows上安装SD卡,我看不到该文件!
现在,如果我去,__CODE__我甚至可以在Windows中看到该文件.
我应该怎么做才能在Windows中看到一个文件,如果该文件是由我的Android应用程序在SD卡上写的,我不想每次都去设置并强制关闭.
实际上文件写得正确(我认为),但由于Android'后退'按钮的默认行为不会杀死应用程序,看起来除非应用程序被杀,否则我无法在Android之外打开文件(在Android中) ,我仍然能够看到它,甚至打开它).
那么,对于这种情况,什么是最好的解决方案.我应该在关闭时自动终止该应用吗?人们说严格不建议使用System.exit().
thi*_*lva 26
您必须使用以下代码,以便您的存档将显示在Windows的文件系统或手机的图库中.
你有两种可能性:
它更快,因为android只更新传递的文件:
MediaScannerConnection.scanFile(this, new String[]{"your path here</"}, null, null);
它更昂贵,因为android将搜索传递的路径中的所有文件.您只能传递文件夹的路径以减少对文件的搜索:
MediaScannerConnection.scanFile(this, new String[]{"your path here</"}, null, null);
因为 BufferedWriter 对象是一个buffer,所以需要对 buffer 进行flush()以强制将内容写入输出流。
String file = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Files/hello.txt";
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(str+"\n");
writer.flush(); // force the buffer to actually dump its data to the stream
writer.close();
Run Code Online (Sandbox Code Playgroud)
当您使用缓冲区进行 .write() 时,请始终记住数据将保留在缓冲区中,直到缓冲区被填满(然后自动刷新())或者您使用 .flush( 强制缓冲区刷新其数据) 缓冲区的方法。
此外,在强制关闭应用程序之前,文件无法正确写入的原因是,当您终止应用程序时,所采取的步骤之一是刷新()与该应用程序关联的所有缓冲区。这就是为什么只有当你强行杀死它时才会发生这种情况。
注意:请记住,这是许多不同语言中大多数类型的缓冲流的默认行为。
| 归档时间: |
|
| 查看次数: |
5459 次 |
| 最近记录: |