Получить байты из строки - PullRequest
1 голос
/ 03 ноября 2011

, если nUploadSize - длинное целое число ниже,

nUploadSize += currentline.getBytes().length;

Есть ли способ получить фактический размер байта, а не его длину? Если я попробую это:

nUploadSize += currentline.getBytes();

Он не принимает поговорку:

The operator += is undefined for the argument type(s) long, byte[]

Причина, по которой я задавал этот вопрос, заключается в том, что я пытаюсь загрузить httppost с диалоговым окном, отображающим прогресс в процентах. Проблема в том, что индикатор выполнения никогда не показывает какой-либо прогресс до того, как будет отображен тост успешного добавления

У меня есть следующий код:

boolean m_bSuccess = true; // initiating a boolean to be used later
        try
        {
                       //upload parameters done through multipartEntity

            MultipartEntity me = new MultipartEntity();

            File pFp = new File(strAttachedFile);

            me.addPart("videoFile", new FileBody(pFp, "video/3gpp"));



            httppost.setEntity(me);

            // get the total size of the file
            nTotalSize = pFp.length();

            //httpPst execution             
            HttpResponse responsePOST = client.execute(httppost);  
            HttpEntity resEntity = responsePOST.getEntity(); 

            //
            InputStream inputstream = resEntity.getContent();//generate stream from post resEntity
            BufferedReader buffered = new BufferedReader(new InputStreamReader(inputstream));//buffer initiated to read inputstream
            StringBuilder stringbuilder = new StringBuilder();
            String currentline = null; 
            while ((currentline = buffered.readLine()) != null) 
            { 
                // adding the  

                stringbuilder.append(currentline + "\n");// appending every line of upload to stringbuilder

                String result = stringbuilder.toString(); 
                nUploadSize += currentline.getBytes().length;// += upload size acquires all current line bites
                //convert upload size from integer to string to be read 
                String s = String.valueOf(nUploadSize);
                Log.i("Upload lineeeeeeeeeeeeeeeeee",s);
                Log.v("HTTP UPLOAD REQUEST",result); 
                inputstream.close();}  
            }

        catch (Exception e) {
            e.printStackTrace();
            m_bSuccess = false; //mbsucess is false on catch failure
        }
        publishProgress();

        if(m_bSuccess)
            return "success";
        return null;
    }


    protected void onProgressUpdate(Integer... progress) {

        if(m_vwProgress !=null){

            m_vwProgress.setProgress((int)(nUploadSize/nTotalSize));
        }

    }


    protected void onPostExecute(String result){

        super.onPostExecute(result);

        if(result==null){

            if(m_vwProgress !=null)
                m_vwProgress.dismiss();
            Toast.makeText(m_activity, "Upload Successful",  Toast.LENGTH_LONG).show(); 

        }
    }
}

При попытке загрузки во время моего Log.i("Upload lineeeeeeeeeeeeeeeeee",s); Он показывает, что максимальный размер байта, который я получаю из nUploadSize += currentline.getBytes().length;, равен 200. Объясняя мою главную проблему, почему в диалоговом окне «Ход выполнения» никогда не отображается процент выполнения, потому что число слишком мало. Вот почему я пытался понять, получал ли я на самом деле размер строки в байтах. Если кто-нибудь знает, как это исправить, я буду благодарен.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

currentLine.getBytes().length - это"размер байта", то есть количество байтов ...

1 голос
/ 03 ноября 2011

Количество байтов currentline.getBytes().length, а необработанные данные (байты) currentline.getBytes()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...