【问题标题】:Reading a txt-file and store it in simple array读取 txt 文件并将其存储在简单数组中
【发布时间】:2026-02-16 01:30:01
【问题描述】:

我在从 Android 中的现有 txt 文件加载文件时遇到了一些问题。

计划是,在appstart上读取txt文件并将读取的字符串存储到字符串数组中。

保存为txt文件代码:

    private void safeScore() {
            File myDir = new File(Environment.getExternalStorageDirectory().toString()
                    + directoryPath);
            myDir.mkdir();

            try {
                File myFile = new File(Environment.getExternalStorageDirectory().getPath() + directoryPath +"/Spieler.txt");
                myFile.createNewFile();
                FileOutputStream fOut = new FileOutputStream(myFile);
                OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);

                for (int i = 0; i < Highscore.nameHS.length; i++)
                {
                    myOutWriter.write(Highscore.nameHS[i] + ";");
                }

                myOutWriter.close();
                fOut.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
}

现在我计划在 appstart 上将此 txt 的值存储回数组中。简单地说——相反的方式。

分割命令的分隔符是“;”。

Highscore 类的 String Array nameHS 是一个普通数组。没有数组列表。

也许有人可以帮助我将值存储回数组中。

您好,

斯文

【问题讨论】:

  • 在android上,为了存储这种东西,你通常使用SharedPreferencesSQLite数据库。

标签: java android arrays fileinputstream


【解决方案1】:
BufferedReader in = new BufferedReader(new FileReader("Spieler.txt"));
String s1 = new String();
while((s1 = in.readLine()) != null) {
    Highscore.nameHS[i++];
}
in.close(); 

如果我明白你想做什么,也许你可以朝这个方向尝试

【讨论】:

  • 完美!这正是我所需要的。非常感谢。效果很好。
【解决方案2】:

如果其他人有同样的问题。下面是我使用 elvirt 的代码 sn-p 的解决方案:

        try
        {
            BufferedReader in = new BufferedReader(new FileReader(Environment.getExternalStorageDirectory().toString() + directoryPath + "/Spieler.txt"));
            String s1 = new String();

            int i = 0;

            while((s1 = in.readLine()) != null) {

                //Toast.makeText(getApplicationContext(), "TextFile wurde geladen!" + " Wert: " + s1, Toast.LENGTH_SHORT).show();
                Highscore.nameHS[i++] = s1;

            }
            in.close();
        }
        catch( IOException e )
        {
            Toast.makeText(getApplicationContext(), "Fehler beim Laden der Highscore-Spieler Datei!", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }

【讨论】: