读取资产文件夹中的文件时出错 - java.lang.IllegalArgumentException: n <= 0: 0

Error reading file in asset folder - java.lang.IllegalArgumentException: n <= 0: 0

我目前正在开发 Android Studio。 我想从资产文件夹中读取一个文件,但它给了我这个错误。有人遇到过这个问题吗?

         java.lang.IllegalArgumentException: n <= 0: 0

这是我的代码:

private String getRandomDataFromCategory(String name/* @param for the name of text file*/){
    readings = "";
    StringBuffer stringBuffer = new StringBuffer();
    String[] temp;
    try{

        //getting file from asset folder
        InputStream inputStream = getAssets().open(name + ".txt",AssetManager.ACCESS_BUFFER);
        int size = inputStream.available();
        byte[] buffer = new byte[size];
        inputStream.read(buffer);
        inputStream.close();
        stringBuffer.append(new String(buffer));

        // to check if stringBuffer isn't empty
        if (stringBuffer.length() != 0){
            //spliting stringBuffer 
            temp = stringBuffer.toString().split("\`");
            Random random = new Random();
            // to create random index of array temp
            int a = random.nextInt(temp.length - 1);
            readings = temp[a];
        }

    }catch (Exception e) {
        Toast.makeText(gaming.this, e.toString(),Toast.LENGTH_SHORT).show();
    }
    return readings;

}

这个post有点类似于这个post Android Random Number llegalArgumentException: n <= 0: 0 又不一样

您可以通过这种方式从资产中读取您的文本文件:

 public String getContentFromFile(String filename)
    {

        StringBuilder s=new StringBuilder();
        try
        {
            InputStream is=getAssets().open(filename);
            BufferedReader br=new BufferedReader(new InputStreamReader(is,Charset.forName("UTF-8")));
            String line;
            while((line=br.readLine())!=null)
            {
                s.append(line).append("\n");

            }

        }catch (Exception | Error e){e.printStackTrace();}
        return s.toString();
   }

您可以根据自己的需要对其进行自定义,如果不起作用,您仍然可以在评论中要求澄清。