Пример #1
0
        private void pack()
        {
            var contend = new List <byte>();

            Console.WriteLine("Creating Header...");

            var header = "";

            foreach (var s in fs)
            {
                Console.WriteLine("Processing file:" + s);

                var tmp = File.ReadAllBytes(s);
                foreach (var i in tmp)
                {
                    contend.Add(i);
                }

                var info = MakeVailed(tmp.Length.ToString()) + Path.GetFileName(s);
                header += StringSizer.Size(info);
            }
            var head = Encoding.UTF8.GetBytes(StringSizer.Fullsize(StringSizer.Size(header).Replace("\n", ""), IntLength));

            var final = new byte[contend.Count + head.Length];

            Console.WriteLine("Creating binery...");

            var t = 0;

            for (var i = t; i < head.Length; i++, t++)
            {
                final[t] = head[t];
            }

            for (var i = 0; i < contend.Count; i++, t++)
            {
                final[t] = contend[i];
            }

            //Console.WriteLine( Encoding.UTF8.GetString( final ) );
            Console.WriteLine("Writing all to file");
            File.WriteAllBytes(filename, final);

            Console.WriteLine("Cleaning...");
            final   = new byte[1];
            contend = new List <byte>();
            head    = new byte[1];
            header  = "";
        }
Пример #2
0
        private void Unpack()
        {
            var contend = new List <byte>(File.ReadAllBytes(filename));

            Console.WriteLine("reading header...");

            var hlength = int.Parse(Encoding.UTF8.GetString(contend.GetRange(0, 20).ToArray()).Substring(0, IntLength));

            var ascy = Encoding.UTF8.GetString(contend.GetRange(IntLength, hlength).ToArray());
            int len;
            var head = StringSizer.UnSize(ascy, out len);

            ascy = "";
            var fullheadlength = (len + 2 + head.Length.ToString().Length + 2) + IntLength;

            Console.WriteLine("Isolating contend...");

            contend = contend.GetRange(fullheadlength, contend.Count - fullheadlength);


            var infos = head.Split('\n');

            var c = 0;

            for (var i = 0; i < infos.Length - 1; i++)
            {
                var p        = StringSizer.UnSize(infos[i], out var length);
                var filename = p.Substring(IntLength);
                var filesize = int.Parse(p.Substring(0, IntLength));

                Console.WriteLine("Processing file:" + filename);

                File.WriteAllBytes(filename, contend.GetRange(c, filesize).ToArray());
                c += filesize;
            }
            Console.WriteLine("Cleaning...");
            contend = new List <byte>();
            ascy    = "";
        }