diff --git a/Filesystem/File.cs b/Filesystem/File.cs index 702f1c4..c8b79fc 100644 --- a/Filesystem/File.cs +++ b/Filesystem/File.cs @@ -42,7 +42,7 @@ namespace DTLib.Filesystem return output; } - public static string ReadAllText(string file) => FrameworkFix.ToString(ReadAllBytes(file)); + public static string ReadAllText(string file) => ReadAllBytes(file).BytesToString(); public static void WriteAllBytes(string file, byte[] content) { diff --git a/FrameworkFix.cs b/FrameworkFix.cs index 2413c24..46d2229 100644 --- a/FrameworkFix.cs +++ b/FrameworkFix.cs @@ -105,7 +105,7 @@ namespace DTLib public static Encoding UTF8 = new UTF8Encoding(false); // байты в кодировке UTF8 в строку - public static string ToString(this byte[] bytes) => UTF8.GetString(bytes); + public static string BytesToString(this byte[] bytes) => UTF8.GetString(bytes); // хеш в виде массива байт в строку (хеш изначально не в кодировке UTF8, так что метод выше не работает с ним) public static string HashToString(this byte[] hash) @@ -133,7 +133,7 @@ namespace DTLib builder.Append(elem.ToString()); builder.Append(separator); } - if (builder.Length==0) + if(builder.Length==0) return ""; builder.Remove(builder.Length-separator.Length, separator.Length); return builder.ToString(); @@ -183,5 +183,24 @@ namespace DTLib o.Add(b.ToString()); return o; } + + // разбивает на части указанной длины + public static List Split(this string s, int length) + { + List parts = new(); + int max = (s.Length/length).Truncate(); + for(int i = 0; i(this T input, bool condition, Func if_true, Func if_false) + { + if(condition) + return if_true(input); + else + return if_false(input); + } } } \ No newline at end of file diff --git a/Network/FSP.cs b/Network/FSP.cs index 276bd50..02e6085 100644 --- a/Network/FSP.cs +++ b/Network/FSP.cs @@ -67,7 +67,7 @@ namespace DTLib.Network Mutex.Execute(() => { BytesDownloaded=0; - Filesize=FrameworkFix.ToString(MainSocket.GetPackage()).ToUInt(); + Filesize=MainSocket.GetPackage().BytesToString().ToUInt(); MainSocket.SendPackage("ready".ToBytes()); int packagesCount = 0; byte[] buffer = new byte[5120]; @@ -144,7 +144,7 @@ namespace DTLib.Network if(!dirOnServer.EndsWith("\\")) dirOnServer+="\\"; Debug("b", "downloading manifest <", "c", dirOnServer+"manifest.dtsod", "b", ">\n"); - var manifest = new Dtsod.DtsodV22(FrameworkFix.ToString(DownloadFileToMemory(dirOnServer+"manifest.dtsod"))); + var manifest = new Dtsod.DtsodV22(DownloadFileToMemory(dirOnServer+"manifest.dtsod").BytesToString()); Debug("g", $"found {manifest.Values.Count} files in manifest\n"); var hasher = new Hasher(); foreach(string fileOnServer in manifest.Keys) diff --git a/Network/Package.cs b/Network/Package.cs index 756223b..54a21a3 100644 --- a/Network/Package.cs +++ b/Network/Package.cs @@ -55,7 +55,7 @@ namespace DTLib.Network // получает пакет и выбрасывает исключение, если пакет не соответствует образцу public static void GetAnswer(this Socket socket, string answer) { - string rec = FrameworkFix.ToString(socket.GetPackage()); + string rec = socket.GetPackage().BytesToString(); if(rec!=answer) throw new Exception($"GetAnswer() error: invalid answer: <{rec}>"); }