gpt4 book ai didi

android - 无法读取和写入内部存储 android

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:47 24 4
gpt4 key购买 nike

我正在为自己编写一个简单的预算应用程序,但我无法弄清楚如何写入内部存储。我似乎没有正确地写入文件,而且我找不到比 Data Storage article 更深入的例子了。在 developer.android.com 上

基本上,我正在尝试将测试 float 写入 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 pointer
ByteBuffer b = ByteBuffer.wrap(buffer);
balance=b.getFloat();

这就是它的要点,有人看到我做错了什么吗?

编辑:感谢您的回复,我继续按照您的建议从 String 转换为/从 String 转换,但我仍然认为文件没有被创建。如果它存在于 onResume() 中并且没有运行,我有一个 if 语句从中读取。让我发布一些我的代码。

这是我编写文件的方式,(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");

那是存储该上下文的内部文件的地方吗?

最佳答案

所以这并不完全是您所要求的,但这是我为字符串工作的方式,它可能对您有所帮助。 (当然,如果你想使用这段代码,你可以将原始类型和 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 与上下文对象和相对路径一起使用,就像在我的代码中一样,然后查看是否返回了某个长度或类似长度的字符串,或者文件不存在的异常。

如果你真的很好奇这个文件是在哪里创建的,或者想亲眼看看,相信你可以在手机上通过DDMS中的文件管理器浏览到。

最后一件事,我建议将 try/catch block 移到您的编写循环之外。由于这是一个重复的相同任务,因此不需要这种方法的开销,但通常最好的做法是尽量减少 try/catch block 的大小。

好吧,最后一件事,如果你想使用具有完整路径的 File 对象,你可能希望路径如下:

File file = new File("/data/data/com.v1nsai.mibudget/balance.txt");

开始的斜线可能会产生很大的不同。

关于android - 无法读取和写入内部存储 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3126032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com