使用 ADB 时 Android Studio “找不到文件”,桌面版有效

Posted

技术标签:

【中文标题】使用 ADB 时 Android Studio “找不到文件”,桌面版有效【英文标题】:Android studio "File not found" when using ADB, Desktop version works 【发布时间】:2019-01-18 06:01:31 【问题描述】:

每当我尝试通过 ADB 在手机上运行我的 libdgx 应用程序时,android studio 都无法在“android/assets”文件夹中找到文件。但是,当我运行桌面版本时,它运行良好。

我正在使用它来读取文件:

File file = new File("BlocksProgression.txt");
reader = new BufferedReader(new FileReader(file));

如上所述,当我运行桌面启动器时,这工作正常,但 android 启动器返回此错误:

W/System.err: java.io.FileNotFoundException: BlocksProgression.txt (No such file or directory)

我已经搜索了一个多小时,但似乎找不到正确设置资产文件夹的方法。

任何帮助将不胜感激。

【问题讨论】:

交叉检查你的文件名,Android file-system is case sensitive. 【参考方案1】:

找到答案:https://github.com/libgdx/libgdx/wiki/File-handling#reading-from-a-file

原来 Libgdx 希望您使用 FileHandle 对象来读取文件。使用这个我的代码变成:

FileHandle file = Gdx.files.internal("BlocksProgression.txt");
String data = file.readString();

这只是将文本作为字符串返回。希望这可以帮助一些人。

【讨论】:

【参考方案2】:

好吧,当使用File file = new File("BlocksProgression.txt") 时,您不是从资产中读取,而是从默认文件目录中读取,从资产中读取文件的正确方法如下

BufferedReader reader = null;
try 
    reader = new BufferedReader(
        new InputStreamReader(getAssets().open("BlocksProgression.txt"), "UTF-8")); 

    // do reading, usually loop until end of file reading 
    String mLine;
    while ((mLine = reader.readLine()) != null) 
       //process line
       ...
    
 catch (IOException e) 
    //log the exception
 finally 
    if (reader != null) 
         try 
             reader.close();
          catch (IOException e) 
             //log the exception
         
    

此代码来自answer

【讨论】:

感谢您的回答,我知道我没有像这样从资产文件夹中读取。当我尝试调用 getAssets 时,它无法解析该方法,因为它不在那个类中,但是,我不知道它在哪个类中,我是否必须扩展一些类以便我可以调用 getAssets。哪个类包含 getAssets 函数?谢谢 编辑:所以我发现 getAssets 只能在活动中调用,否则我应该使用静态类 ContextInstance,但是,我似乎找不到要导入的类。另外我无法扩展“活动”(也没有找到),也许我的项目设置不正确。 也许试试这个导入,import android.app.Activity; 嗯,这不起作用,但我找到了问题所在。我会将其发布为其他有相同问题的人的答案。无论如何感谢您的帮助!

以上是关于使用 ADB 时 Android Studio “找不到文件”,桌面版有效的主要内容,如果未能解决你的问题,请参考以下文章

adb.exe 已停止使用 Android Studio 4.3.1 和 Android 9.+

Android Studio,如何处理adb错误?

运行 Visual Studio 2015 RC 和 MS Android 模拟器时定位 adb.exe 时出错

怎么在Android Studio中执行adb命令

Android Studio ADB响应失败解决方法

错误:无法在 Android Studio 的 SDK 中找到 adb