-
간단한 자기 복제 (simply self-replication)프로그래밍/C# + Unity 2019. 2. 12. 22:55728x90
class Copier { public void SelfCopier(String ExeName, String Destination) { string path = Directory.GetCurrentDirectory() + @"\\" + ExeName; FileInfo fileInfo = new FileInfo(path); long filesize = fileInfo.Length; long ahrt = filesize / 1024; //몫 int skajwl = ((filesize % 1024) == 0 ? 1024 : 0); //나머지 /* 파일을 읽어 로직에 담음 */ BinaryReader brfile = new BinaryReader(File.OpenRead(path)); byte[] tmpd_0 = new byte[1024]; byte[] tmpd_9 = new byte[skajwl]; for (long i = 1; i <= ahrt; i++) { BinaryWriter bwfile = new BinaryWriter(File.OpenWrite(Destination + i)); if (i == ahrt) { tmpd_9 = brfile.ReadBytes(skajwl); bwfile.Write(tmpd_9); bwfile.Close(); } else { tmpd_0 = brfile.ReadBytes(1024); bwfile.Write(tmpd_0); bwfile.Close(); } } brfile.Close(); /* 파일을 읽어 분할 후 저장 */ /* 분할한 파일을 읽어 하나로 만듦*/ BinaryWriter bw = new BinaryWriter(File.OpenWrite(Destination)); for (int i = 1; i <= ahrt; i++) { BinaryReader br = new BinaryReader(File.OpenRead(Destination + i)); FileInfo fi = new FileInfo(Destination + i); if (i == ahrt) { tmpd_9 = br.ReadBytes(skajwl); bw.Write(tmpd_9); bw.Flush(); } else { tmpd_0 = br.ReadBytes(1024); bw.Write(tmpd_0); bw.Flush(); } br.Close(); fi.Delete(); } bw.Close(); /* 분할한 파일을 읽어 하나로 만듦 */ } }
자기 스스로를 이진 읽기로 읽어 들인 후 적당한 사이즈(1024bytes)로 분할하여 목적지로 이동 후 목적지에서 재조합 하여 자기 복제를 수행하는 함수
728x90댓글