왜 많은 예제가 바이트 배열을 척으로 스트림으로 읽었는지 궁금합니다.이 질문은 부드러운 질문이지만, 관심이 있습니다.청크로 스트림에 기록하는 이유는 무엇입니까?
하드웨어에 대해 조금 이해하고 있습니다. 버퍼는 매우 크기에 따라 달라질 수 있으며, 버퍼가 필요할 때마다 플러시 될 때까지 버퍼에 다시 쓰지 않아도됩니다. 플랫폼 (및 기타 현대 언어) 두 가지 예가 나와 있습니다. 언제 어느 때, 아니면 두 번째 절대 사용합니까?
var buffer = new byte[4096];
while (true)
{
var read = this.InputStream.Read(buffer, 0, buffer.Length);
if (read == 0)
break;
OutputStream.Write(buffer, 0, read);
}
보다는 : 나는 모두가 합법적 생각
var buffer = new byte[InputStream.Length];
var read = this.InputStream.Read(buffer, 0, buffer.Length);
OutputStream.Write(buffer, 0, read);
여기
는 것 (코드) 무슨 뜻입니까? 그렇다면 왜 while 루프의 모든 소란을 피하십시오 (구조를 결정했는지). 내가
일반적으로 메모리에 저장하는 양이 더 중요하므로 버퍼 (스트림)를 채우고 이동하지 않는 것은 좋지 않습니다. 방정식에서 OutputStream을 빼내고 while 루프를 사용하여 InputStream을 채운다면? 내가 이것을 보았으므로 두 번째 예와 마찬가지로 나쁠 것입니까? – tigerswithguitars
모든 것은 당신이하고 싶은 일에 당신의 특정한 경우에 달려 있습니다. 작은 덩어리 (값의 합을 계산하고, 최대 값을 찾는)에서 작동 할 수있는 알고리즘이 있으며 모든 데이터가 필요한 알고리즘 (예 : 정렬)이 있습니다. 두 번째 경우에는 모든 데이터를 읽어야합니다. 첫 번째 경우에는 - 실제로는 아닙니다. – liori
차가운 ... 그래서 응용 프로그램 특정, 내 주요 생각했다, 제 생각에 ...보다는 오히려 대부분의 언어에서 객체 자체의 자연. 감사합니다 :) – tigerswithguitars