function isset(key){
ret = false;
array_example.forEach(function(entry) {
if( entry == key ){
ret = true;
}
});
return ret;
}
alert( isset("key_search") );
Использование вспомогательного метода для управления потоковой передачей:
static public void StreamCopy(Stream source, Stream target)
{
byte[] buffer = new byte[8 * 1024];
int size;
do
{
size = source.Read(buffer, 0, 8 * 1024);
target.Write(buffer, 0, size);
} while (size > 0);
}
Вы можете легко комбинировать все, что вам нужно:
using (FileStream iFile = new FileStream(...))
using (FileStream oFile = new FileStream(...))
using (DeflateStream oZip = new DeflateStream(outFile, CompressionMode.Compress))
StreamCopy(iFile, oZip);
В зависимости от того, что вы на самом деле пытаетесь сделать, вы ' d по-другому объединить потоки. При этом также используется относительно небольшой объем памяти, поскольку в памяти находятся только обрабатываемые данные.
StreamReader / StreamWriter не должны были быть предназначены для закрытия основного потока - это ужасная ошибка в BCL. Но они есть, они не будут изменены (из-за обратной совместимости), поэтому мы застряли в этой катастрофе API.
Но есть некоторые хорошо известные обходные пути, если вы хотите использовать StreamReader / Writer, но Впоследствии оставьте Stream открытым.
Если вы не читаете потоками, размер которых превышает размер жесткого диска, я не думаю, что вам не хватит памяти: