簡體   English   中英

LibGDX寫入文本文件並收到各種錯誤

[英]LibGDX writing to text file and receiving various errors

我當前使用LibGDX創建的游戲具有“高分”功能,其中高分保存在文本文件中,然后被覆蓋或讀取到屏幕上。 我在這里遇到很多錯誤。 我嘗試設置權限以允許外部文件寫入,我嘗試將.txt文件放在其他目錄中。 我嘗試使用Gdx.files.internal() and Gdx.files.external()沒有任何工作。 這是我獲得和設置高分的兩種方法。

private int getHighScore()
{
    FileHandle scoreFile = Gdx.files.local("data/high_score.txt");
    String text = scoreFile.readString();
    int highScore = Integer.parseInt(text);
    return highScore;
}

private void setHighScore(int newScore)
{
    FileHandle scoreFile = Gdx.files.local("data/high_score.txt");
    String score = Integer.toString(newScore);
    scoreFile.writeString(score, false);
}

在游戲中死亡時(應該顯示分數),我從LibGDX收到此錯誤:

03-06 22:31:37.437: ERROR/AndroidRuntime(14533): FATAL EXCEPTION: GLThread 4617
        com.badlogic.gdx.utils.GdxRuntimeException: File not found: /data/data/hasherr.floppyfish.android.core/files/data/high_score.txt (Local)
        at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:133)
        at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:77)
        at com.badlogic.gdx.files.FileHandle.readString(FileHandle.java:198)
        at com.badlogic.gdx.files.FileHandle.readString(FileHandle.java:186)
        at hasherr.ghostly.main.state.DeathState.getHighScore(DeathState.java:122)
        at hasherr.ghostly.main.state.DeathState.render(DeathState.java:87)
        at hasherr.ghostly.main.state.StateManager.render(StateManager.java:37)

注意這里:

找不到文件:/data/data/hasherr.floppyfish.android.core/files/data/high_score.txt(本地)

/data/data/hasherr.floppyfish.android.core/files/data/high_score.txt不是我的游戲中的目錄/文件。 data/high_score.txt是,這就是我要訪問的文件。 我對Gdx.files.local(path)方法不是很熟悉,所以我不確定它是從哪里獲取的。

如何使程序使用此文本文件而不會引發錯誤?

首先,我建議,以確保中, Highscores.txt存在於Gdx.files.local("data/high_score.txt"); 為此,您可以使用: boolean exists = Gdx.files.local("Highscores.txt").exists(); 如果此布爾值為false ,則可以讀取“ no Highscores”,而不是讀取.txt 正如@MelihYıldız'所說, Gdx.files.local指向私有應用程序存儲。 但是,如果使用它來writeread數據,則無需關心它在哪里。 只要確保您始終使用相同的FileHandle 要了解所有不同的Gdx.files.xxx,可以閱讀此內容 它說明了在何處存儲數據以及哪種應用程序類型可以訪問它。 對於Highscores您還可以考慮使用Preferences 快速教程 請注意, Preferences是存儲HTML5應用程序數據的唯一可能性。 如果您想使您的App成為Webapp,則應該仔細考慮一下。

Gdx使用您的應用程序文件夾。

在文檔的“文件處理”部分中:

文件也可以存儲在內部存儲器中,在此處可讀可寫。 每個已安裝的應用程序都有一個專用的內部存儲目錄。 該目錄再次只能由該應用程序訪問。 可以將這種存儲視為應用程序的專用工作區。

在圖表中,您可以看到本地:

本地文件相對於桌面上應用程序的根目錄或工作目錄存儲, 而相對於 Android上應用程序的內部(私有)存儲而言 請注意,本地和內部在桌面上基本相同。

您應該使用Gdx.files.internal("data/high_score.txt"); 相反,如果您想存儲在設備內部存儲器中。

參考鏈接: https : //github.com/libgdx/libgdx/wiki/文件處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM