• Как сравнить два массива и оставить только совпадающие данные, не загружая массивы в память?

    @ar4ebaldello
    Если значения действительно разные, отсортированные по возрастанию и размер у них 4 байта:
    var stream1 = new BinaryReader(File.OpenRead("someFile1.bin"));
    var stream2 = new BinaryReader(File.OpenRead("someFile2.bin"));
    var output = new BinaryWriter(File.OpenWrite("output.bin"));
    
    if (stream1.PeekChar() != -1 && stream2.PeekChar() != -1)
    {
        var val1 = stream1.ReadInt32();
        var val2 = stream2.ReadInt32();
    
        while (true)
        {
            if (val1 == val2)
            {
                output.Write(val1);
    
                if (stream1.PeekChar() == -1 || stream2.PeekChar() == -1) break;
                val1 = stream1.ReadInt32();
                val2 = stream2.ReadInt32();
            }
            else if (val1 < val2)
            {
                if (stream1.PeekChar() == -1) break;
                val1 = stream1.ReadInt32();
            }
            else
            {
                if (stream2.PeekChar() == -1) break;
                val2 = stream2.ReadInt32();
            }
        }
    }
    
    stream1.Close();
    stream2.Close();
    output.Close();
    Ответ написан
    Комментировать