В настоящее время я создаю базовый http-прокси, который может иметь текстовую цензуру. Когда я читал из входного потока, я надеялся манипулировать текстом (то есть заменить или удалить) массива байтов и передать его в выходной поток для клиента. Однако размер входного потока с сервера может быть очень большим (> 100 МБ). Есть ли способы сделать это эффективно?Манипулировать данными потока потока и эффективно отправлять его в выходной поток
Вот мой фрагмент (без обработки каких-либо данных) при чтении и отправке данных с сервера на клиент.
int count = 0;
byte[] buffer = new byte[102400];
while ((count = fromServer.read(buffer)) > 0){
System.out.println(new String(buffer, "UTF-8"));
toClient.write(buffer, 0, count);
fos.write(buffer, 0, count);
}
fos.close();
server.close();
client.close();
fromServer является входным потоком от сервера, FOS является файлом для целей кэширования и toClient является выходным потоком к клиенту.
Большое спасибо!
Возможно, вы захотите использовать BufferedReader. Так как вам придется декодировать, чтобы изменить любой текст, а затем переписать/переписать с другим BufferedWriter. Если вы попытаетесь прочитать байт [], тогда декодируйте и измените существующий байт [], я не думаю, что вы сэкономите большую производительность, но у вас будет огромная головная боль. – matt