我的手机运行Android 4.0.4并处于媒体传输协议(MTP)模式。我的应用程序正尝试改写手机的SD卡上的同一个文本文件与进步较大的文件,使用下面的代码的连续调用:Android:不完全覆盖文本文件
File mDir = new File(Environment.getExternalStorageDirectory(), "Location");
File mFile = new File(mDir, "Location.txt");
PrintWriter mPW = new PrintWriter(mFile);
mPW.println(sData); // sData is a string of a few hundred characters
mPW.flush();
mPW.close();
期间USB调试模式测试,我有以下问题。在Windows 7中,我可以打开使用最新数据编写的文件,但修改日期的时间和大小对应于较早的文件写入,我只能看到与该大小相对应的字符数。旧文件中有效的新数据。
我在网上搜索,但似乎没有人报告过这类问题。我尝试了很多更好的方式来编写文件,包括使用缓冲类,甚至在重新写入文件之前删除和重新创建文件,都无济于事。
重新启动手机后,问题似乎消失了,但我不知道这是否与任何人都响了。
这使得很多道理@CommonsWare。幸运的是,在开发过程中,我只是依靠MTP来简化操作,因为用户将通过Airdroid或类似软件远程访问文件。 有关USB调试是否与MTP或MSC同样满意的看法似乎有所不同。 – user3787658
@ user3787658:如果是MSC,则表示USB Mass Storage,用于Android 1.x/2.x。然后,当它作为驱动器安装在主机上时,您将无法写入文件。 MTP至少允许同时访问,尽管有限制。 – CommonsWare
是的,我的意思是USB ** m ** ass ** s ** torage device ** c ** lass。感谢您指出USB Mass Storage不会真的加快开发速度。 现在我知道问题只是一种可见性,我可以不再担心它。 顺便说一句,我已经使用SD重新扫描程序来尝试改善同步,但我通常最终也不得不拔掉并重新插入USB电缆! – user3787658