Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Почему массив весь в нулях ?


Автор: DenWPF 13.5.2011, 09:35
Создание файла.

Код

    InputStream instream = response.getEntity().getContent();
            File oTmpFile = File.createTempFile("id3.", ".mp3");
            OutputStream out = new FileOutputStream(oTmpFile);
            byte buf[] = new byte[1024];
            int len;
            while ((len = instream.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
            out.close();
            instream.close();



Читаю 


        
Код

try {
                        InputStream oSourceIS = new BufferedInputStream(new FileInputStream(file));
        
                        try {
                            // copy over all of the file up to the last 128 bytes
                            long lFileLength = file.length();
                            oSourceIS.skip(lFileLength - 128);
        
                            // check if V1 tag is present
                            byte[] abyCheckTag = new byte[3];
                            oSourceIS.read(abyCheckTag);
                            if ((abyCheckTag[0] == 'T') && (abyCheckTag[1] == 'A') && (abyCheckTag[2] == 'G')) {
                                // there is a tag, we must read it
                                //ID3V1Tag oID3V1Tag = ID3V1Tag.read(oSourceIS);
                                //return oID3V1Tag;
                            } else {
                                return null;
                            }
                        } finally {
                        oSourceIS.close();
                    }
                }
                catch (Exception e)
                {
                    throw new ID3Exception(e);
                }
    
  


  abyCheckTag[0] == 0 abyCheckTag[1] == 0 abyCheckTag[2] == 0;

это файл mp3.
Если его открвыаю вручную вижу нужные символы.

Ещё я заметил что в некоторых файлах работает, это что то наверное с кодировкой. mp3 идет с кодировками utf8\16.
только я не понимаю где эту кодировку использовать

Автор: jk1 13.5.2011, 10:55
Цитата

Если его открвыаю вручную вижу нужные символы.

Вот именно что символы, а Вы читаете байты при помощи метода read(). Чтобы читать символы вместо байт используйте Reader вместо Stream. В его конструкторе и указывается нужная кодировка.

А пока происходит вот что: из потока читается первые n байт, а потом Вы их пытаетесь савнивать с символами, это и близко работать не будет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)