【问题标题】:Error reading file in asset folder - java.lang.IllegalArgumentException: n <= 0: 0读取资产文件夹中的文件时出错 - java.lang.IllegalArgumentException: n <= 0: 0
【发布时间】:2018-11-08 14:35:44
【问题描述】:

我目前正在开发 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;

}

这篇文章和这篇文章有些相似 Android Random Number llegalArgumentException: n <= 0: 0 还是不一样的

【问题讨论】:

    标签: java android assets


    【解决方案1】:

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

     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();
       }
    

    您可以自定义它以满足您的需要,如果不起作用,您仍然可以在 cmets 中要求澄清。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2021-12-11
      • 2012-12-26
      • 2018-01-19
      • 2012-03-14
      • 2020-03-03
      相关资源
      最近更新 更多