Ошибка чтения файла в папке ресурсов - java.lang.IllegalArgumentException: n <= 0: 0 - PullRequest
0 голосов
/ 08 ноября 2018

Я сейчас работаю над 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 llegalArgumentException: n <= 0: 0 </a> еще отличается

1 Ответ

0 голосов
/ 08 ноября 2018

Вы можете прочитать ваш текстовый файл из ресурсов следующим образом:

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

Вы можете настроить его под свои нужды, а если не работает, вы все равно можете попросить разъяснения в комментариях.

...