gpt4 book ai didi

java - 如何在 Android 中写入和读取文本文件?

转载 作者:行者123 更新时间:2023-11-30 04:29:06 25 4
gpt4 key购买 nike

我正在开发一个字典应用程序。应用程序上有一个 Collection 夹按钮,允许用户:

  • 短按将当前查看的单词添加到 Collection 列表;
  • 长按可查看(已添加单词的) Collection 夹列表。

到目前为止,我已经编码如下:

更新代码:

//Writing lines to myFavourite.txt
btnAddFavourite = (ImageButton) findViewById(R.id.btnAddFavourite);
btnAddFavourite.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// Writing the content
try {
// opening myFavourite.txt for writing
OutputStreamWriter out = new OutputStreamWriter(openFileOutput("myFavourite.txt", MODE_APPEND));
// writing the ID of the added word to the file
out.write(mCurrentWord);
// closing the file
out.close();
} catch (java.io.IOException e) {
//doing something if an IOException occurs.
}
Toast toast = Toast.makeText(ContentView.this, R.string.messageWordAddedToFarvourite, Toast.LENGTH_SHORT);
toast.show();
}
});

//Reading lines from myFavourite.txt
btnAddFavourite.setOnLongClickListener(new View.OnLongClickListener() {

@Override
public boolean onLongClick(View v) {

//trying opening the myFavourite.txt
try {
// opening the file for reading
InputStream instream = openFileInput("myFavourite.txt");

// if file the available for reading
if (instream != null) {
// prepare the file for reading
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);

String line;

// reading every line of the file into the line-variable, on line at the time
try {
while ((line = buffreader.readLine()) != null) {
// do something with the settings from the file
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

// closing the file again
try {
instream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (java.io.FileNotFoundException e) {

// ding something if the myFavourite.txt does not exits
}
return false;

}});
}

但是, Collection 夹按钮不适用于上述代码行。

myFavourite.txt 文件确实存在(在 Eclipse 中的 data/data/my_project/files 中)但它只包含一个最近添加的单词。此外,长按“Collection 夹”按钮时,应用程序会被强制关闭。

我做错了什么?如果你们能帮我解决这个问题,我将不胜感激。非常感谢。

========

编辑

非常感谢您的帮助。我更新了我的代码以反射(reflect)您的评论和提示。到目前为止,已经有了一些改进:最喜欢的单词已经写入文件 myFavourite.txt,如 word2 word2 word3...(尽管我希望它们出现在新行)。

但是,当 Collection 夹按钮被长按时, Collection 夹列表仍然没有加载。

事实上,我的目的是让在应用程序中加载 Collection 夹列表并允许用户选择要再次查找的单词成为可能。

非常感谢您的帮助。

最佳答案

在这条线上

OutputStreamWriter out = new OutputStreamWriter(openFileOutput("myFavourite.txt",0));

如果您每次创建流时文件已经存在,那么您将覆盖该文件。你想要做的是传递 MODE_APPEND 而不是 0。看看 the documentation .

关于长时间点击,这些行

if (instream) {

while (( line = buffreader.readLine())) {

甚至不应该编译。你想要的可能是这样的

if (instream.ready()) {

while ((line = buffreader.readLine()) != null) {
// Use this line
}

关于java - 如何在 Android 中写入和读取文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026204/

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