
我正在为自己编写一个简单的预算应用程序,但在弄清楚如何写入内部存储时遇到了麻烦.我似乎没有正确地写入文件,并且在developer.android.com上找不到比Data Storage article更深入的示例了
基本上,我试图将测试浮点数写入MyBalance文件,然后将其读入平衡.在我的实际代码中,我在文件输入/输出 *** 作周围使用了try / catch语句,但是我跳过了它们以使代码更具可读性.
float test = 55;float balance;byte[] buffer = null;fileOutputStream fos = openfileOutput( "MyBalance", Context.MODE_PRIVATE );fos.write(float.floatToRawIntBits(balance));fis.read(buffer); //null pointerByteBuffer b = ByteBuffer.wrap(buffer);balance=b.getfloat();这就是要旨,有人知道我在做什么错吗?
编辑:
感谢您的答复,我继续按照您的建议将字符串转换为String或从String转换为String,但是我仍然不认为该文件正在创建.我有一个if语句,如果它存在于onResume()中并且未在运行,则从中读取.我发布了一些代码.
这是我编写文件的方式(setbal是EditText,balancevIEw是TextVIEw):
balance = float.valueOf(setbal.getText().toString()); balancevIEw.setText(setbal.getText()); balstring = String.valueOf(balance); for (int i = 0; i < balstring.length(); ++i) try { fos.write((byte)balstring.charat(i)); } catch (IOException e) { e.printstacktrace(); }我检查文件是否存在于onResume()中,如下所示:
file file = new file("data/data/com.v1nsai.mibudget/balance.txt");那是用于该上下文的内部文件的存储位置吗?
解决方法:
因此,这并不是您所要的,但这是我如何将其用于Strings的方法,它可能对您有所帮助. (如果要使用此代码,则可以将原始函数装箱并使其toString.)
写作
fileOutputStream fos = context.openfileOutput("savedstate.txt", 0);for (int i = 0; i < out.length(); ++i) fos.write((byte)out.charat(i));读
StringBuilder inb = new StringBuilder();fileinputStream fis = this.mContext.openfileinput("savedstate.txt");int ch;while((ch = fis.read()) != -1) inb.append((char)ch);更新资料
想到的一个想法是,您可能不希望使用带有手键入文件完整路径的file对象.相反,只需将fileinputStream与上下文对象和相对路径一起使用,就像在我的代码中一样,然后查看您是否获得了一定长度的String或类似的东西,或者该文件不存在的异常.
如果您真的对文件的创建位置感到好奇,或者想用自己的眼睛查看文件,我相信您可以通过DDMS中的文件管理器在手机上浏览到该文件.
最后一件事,我建议将try / catch块移出编写循环.由于重复执行的是相同的任务,因此无需花费这种方法的开销,尽管通常最好的做法是最小化try / catch块的大小.
好的,最后一件事,如果要使用具有完整路径的file对象,则可能需要使路径如下:
file file = new file("/data/data/com.v1nsai.mibudget/balance.txt");斜线开头可能会有所不同.
总结以上是内存溢出为你收集整理的无法读取和写入内部存储android全部内容,希望文章能够帮你解决无法读取和写入内部存储android所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)