1. Sobre o InputStream.read ()
Ao ler dados de um fluxo de dados, o gráfico é simples e o método inputStream.read () é frequentemente usado. Este método é ler apenas um byte do fluxo de cada vez, que será muito ineficiente. Uma maneira melhor é usar o método InputStream.read (byte [] b) ou inputStream.read (byte [] b, int off, int len) para ler vários bytes por vez.
2. Sobre o método disponível () da classe InputStream
Ao ler vários bytes por vez, o método InputStream.Available () é frequentemente usado. Deve -se notar que, se esse método for usado para ler dados de arquivos locais, geralmente não encontrará problemas, mas se for usado para operações de rede, geralmente encontrará alguns problemas. Por exemplo, quando o soquete está se comunicando, a outra parte enviou claramente 1.000 bytes, mas seu programa chama o método disponível () obtém apenas 900, ou 100 ou mesmo 0. Parece um pouco inexplicável e não consegue encontrar o motivo. De fato, isso ocorre porque a comunicação de rede geralmente é intermitente e uma série de bytes é frequentemente enviada em vários lotes. O programa local chama o método disponível () às vezes recebe 0. Isso pode ser porque a outra parte ainda não respondeu, ou pode ser porque a outra parte respondeu, mas os dados não foram entregues na área local. A outra parte enviou 1.000 bytes para você e talvez chegasse em 3 lotes.
Se você escrever o código como este:
int count = in.Available ();
Muitas vezes, existem erros ao executar operações de rede porque, quando você chama o método disponível (), os dados enviados para o envio podem ainda não ter chegado e a contagem que você recebe é 0.
Precisa mudar assim:
int conting = 0;
3. Sobre o InputStream.read (byte [] b) e inputstream.read (byte [] b, int off, int len)
Ambos os métodos são usados para ler vários bytes de um fluxo. Por exemplo, no primeiro método, os programadores geralmente esperam que o programa possa ler B.Length Bytes, mas a situação real é que o sistema geralmente não pode ler tantos. Depois de ler cuidadosamente as instruções da API Java, você descobrirá que esse método não garante que ele possa ler tantos bytes, só pode garantir que ele possa ler até tantos bytes (pelo menos 1). Portanto, se você deseja que o programa leia a Count Bytes, é melhor usar o seguinte código:
byte [] b = novo byte [contagem]; ;
Este código pode garantir que a contagem de bytes seja lida, a menos que uma exceção de IO seja encontrada no meio ou no final do fluxo de dados (eofexception)
4. Exemplo de leitura de arquivos do PowerPoint
Importar java.io.inputstream; hslf .model.slide; Slideshow ss = nova apresentação de slides (nova apresentação de hslfslides (is); // é o insputStream do arquivo, crie slideshow slide [] slides = ss.getslides (); // obtenha cada slide para (int i = 0; i < slides.length; i ++) {textrun [] t = slides [i] .getTextrUns (); // Para obter o conteúdo de texto do slide, crie textrun para (int j = 0; j <t.length; j ++ ) {content .Append (t [j] .getText ()); // aqui o conteúdo do texto será adicionado ao conteúdo} content.append (slides [i] .gettitle ()); título, conteúdo .ToString ());