using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace JavaCode.cs { public class TerrainHelper { public static void RemoveTerrain() { char[] chars = new char[] { ',' }; string folder = @"E:\data\35.ty\terrain"; string[] strs = File.ReadAllLines(folder + "\\layer.json"); int i = -1; foreach (string str in strs) { if (!str.Contains("[ {")) continue; i++; if (i < 5 || i > 12) continue; // ,[ { "startX": 6604, "startY": 2834, "endX": 6702, "endY": 2975 } ] string[] vals = str.Replace("startX", "").Replace("startY", "").Replace("endX", "").Replace("endY", "").Replace("[ {", "").Replace("} ]", "").Replace("\"", "").Replace(":", "").Replace(" ", "").Split(chars, StringSplitOptions.RemoveEmptyEntries); int startX = int.Parse(vals[0]), startY = int.Parse(vals[1]), endX = int.Parse(vals[2]), endY = int.Parse(vals[3]); RemoveFiles(folder, i, startX, endX, startY, endY); } } private static void RemoveFiles(string folder, int level, int startX, int endX, int startY, int endY) { string path = Path.Combine(folder, level.ToString()); if (!Directory.Exists(path)) return; string[] dirs = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly); foreach (string dir in dirs) { string dirName = Path.GetFileName(dir); int d = 0; if (!int.TryParse(dirName, out d)) { Directory.Delete(dir, true); continue; } if (d < startX || d > endX) { Directory.Delete(dir, true); continue; } string[] files = Directory.GetFiles(dir); foreach (string file in files) { string fileName = Path.GetFileName(file).Replace(".terrain", ""); int f= 0; if (!int.TryParse(fileName, out f)) { File.Delete(file); continue; } if (f < startY || f > endY) { File.Delete(file); } } } } } }