gpt4 book ai didi

java - 编译错误 "variable x may not have been initialized"是什么意思

转载 作者:行者123 更新时间:2023-12-02 04:09:31 25 4
gpt4 key购买 nike

我正在尝试编写一个可以读取和写入文件的 Java Android 程序。不过我有一些问题。当最后一行运行时,Eclipse 告诉我我的 TotalString 变量可能尚未初始化。但是,我在 try 循环内为其分配了一个值。当我删除最后一行并运行程序时,我的控制台显示“成功读取文件”以及“java.io.FileInputStream@d77ffd1”。这绝对不是我写入文件的值。我不知道我在这里做错了什么,我有点失去理智了。另外,如果我尝试添加一行像

totalString = "A Test Value"

在 try block 中,我仍然遇到相同的错误。任何帮助将不胜感激。

            //lets try WRITING the file

Context context = getApplicationContext();
String filename = "balance";
String balanceString = "0.00";
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write(balanceString.getBytes());
outputStream.close();
}
catch (Exception e) {
e.printStackTrace();
System.out.println("Error in Writing File.");
}

//lets try READING the file
String totalString;
FileInputStream inputStream;
try {
inputStream = openFileInput(filename);
inputStream.read();
inputStream.close();
totalString = inputStream.toString();
System.out.println("Read File Successfully");
System.out.println(totalString);
}
catch (Exception e) {
e.printStackTrace();
System.out.println("Error in Reading File.");
}
System.out.println(totalString);

最佳答案

inputStream.toString() 返回一个表示 InputStream 对象 ID 的字符串。不是文件内的数据。

如果您想要从InputStream读取文件中的数据,则需要使用内置方法来读取文件。最简单的方法是将 InputStream 对象包装在 BufferedReader (或任何其他 Reader 对象)内,然后使用 .readLine()(或等效)方法来获取数据。

例如:

String totalString;
BufferedReader in;
try {
in = new BufferedReader(new InputStreamReader(openFileInput(filename)));
totalString = in.readLine();
in.close();
System.out.println("Read File Successfully");
System.out.println(totalString);
}
catch (Exception e) {
e.printStackTrace();
System.out.println("Error in Reading File.");
}
<小时/>

现在输出:

您可以使用与以前完全相同的技术,只需将对象更改为其“Writer”等效项。例如:

PrintWriter out;
try {
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(penFileOutput(filename, Context.MODE_PRIVATE))));
out.println(balanceString);
out.flush();
out.close();
}
catch (Exception e) {
e.printStackTrace();
System.out.println("Error in Writing File.");
}

除了 BufferedWriter 之外,这里使用 PrintWriter 的目的是因为它提供了非常易于使用的方法(即 println())。此外,“flush()”方法用于确保流中的所有数据都写入文件,而不是“卡在”缓冲区中。

编辑:忘记在上面的 BufferedReader 之前添加"new"。已修复。

关于java - 编译错误 "variable x may not have been initialized"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33926923/

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