GameFramework.Txt2Binary.Convert C# (CSharp) Метод

Convert() публичный статический Метод

public static Convert ( string file, string outFile, Encoding encoding ) : bool
file string
outFile string
encoding System.Text.Encoding
Результат bool
        public static bool Convert(string file, string outFile, Encoding encoding)
        {
            try {
                string[] lines = File.ReadAllLines(file, encoding);
                if (lines.Length >= 2) {
                    string[] types = lines[0].Split('\t');
                    string[] fields = lines[1].Split('\t');

                    string dirName = Path.GetDirectoryName(file);
                    string fileName = Path.GetFileName(file);
                    string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file);

                    int fieldCount = 0;
                    int excelColumnCount = types.Length;
                    if (fields.Length != excelColumnCount) {
                        LogSystem.Error("[line:2] “{0}” field count != {1}", lines[1], excelColumnCount);
                        return false;
                    }
                    for (int ix = 0; ix < excelColumnCount; ++ix) {
                        if (string.IsNullOrEmpty(types[ix]) || string.IsNullOrEmpty(fields[ix]))
                            continue;
                        ++fieldCount;
                    }
                    BinaryTable table = new BinaryTable();
                    for (int rowIndex = 2; rowIndex < lines.Length; ++rowIndex) {
                        if (lines[rowIndex].StartsWith("#") || lines[rowIndex].StartsWith("//"))
                            continue;
                        int colIndex = 0;
                        string[] fieldValues = lines[rowIndex].Split('\t');
                        if (fieldValues.Length != excelColumnCount) {
                            LogSystem.Error("[line:{0}] “{1}” field count != {2}", rowIndex + 1, lines[rowIndex], excelColumnCount);
                            continue;
                        }
                        byte[] record = new byte[fieldCount * sizeof(int)];
                        table.Records.Add(record);
                        for (int ix = 0; ix < excelColumnCount; ++ix) {
                            if (string.IsNullOrEmpty(fields[ix]) || string.IsNullOrEmpty(types[ix]))
                                continue;
                            string type = types[ix].Trim();
                            string val = fieldValues[ix].Trim();
                            try {
                                if (0 == type.CompareTo("int") || 0 == type.CompareTo("int32") || 0 == type.CompareTo("long") || 0 == type.CompareTo("int64")) {
                                    int v = 0;
                                    if (!string.IsNullOrEmpty(val)) {
                                        v = int.Parse(val);
                                    }
                                    WriteIndex(record, colIndex, v);
                                } else if (0 == type.CompareTo("float")) {
                                    float v = 0;
                                    if (!string.IsNullOrEmpty(val)) {
                                        v = float.Parse(val);
                                    }
                                    WriteFloat(record, colIndex, v);
                                } else if (0 == type.CompareTo("bool")) {
                                    bool v = false;
                                    if (!string.IsNullOrEmpty(val)) {
                                        v = (val == "true" || val == "1");
                                    }
                                    WriteIndex(record, colIndex, v ? 1 : 0);
                                } else if (0 == type.CompareTo("string")) {
                                    int index = table.AddString(val);
                                    WriteIndex(record, colIndex, index);
                                } else if (0 == type.CompareTo("int[]") || 0 == type.CompareTo("int32[]") || 0 == type.CompareTo("long[]") || 0 == type.CompareTo("int64[]")) {
                                    int index = -1;
                                    if (!string.IsNullOrEmpty(val)) {
                                        string[] v = val.Split(',', ';', '|', ' ');
                                        int[] vals = new int[v.Length];
                                        for (int i = 0; i < v.Length; ++i) {
                                            vals[i] = int.Parse(v[i]);
                                        }
                                        index = table.AddIntList(vals);
                                    }
                                    WriteIndex(record, colIndex, index);
                                } else if (0 == type.CompareTo("float[]")) {
                                    int index = -1;
                                    if (!string.IsNullOrEmpty(val)) {
                                        string[] v = val.Split(',', ';', '|', ' ');
                                        float[] vals = new float[v.Length];
                                        for (int i = 0; i < v.Length; ++i) {
                                            vals[i] = float.Parse(v[i]);
                                        }
                                        index = table.AddFloatList(vals);
                                    }
                                    WriteIndex(record, colIndex, index);
                                } else if (0 == type.CompareTo("bool[]")) {
                                    int index = -1;
                                    if (!string.IsNullOrEmpty(val)) {
                                        string[] v = val.Split(',', ';', '|', ' ');
                                        int[] vals = new int[v.Length];
                                        for (int i = 0; i < v.Length; ++i) {
                                            vals[i] = (v[i] == "true" || v[i] == "1") ? 1 : 0;
                                        }
                                        index = table.AddIntList(vals);
                                    }
                                    WriteIndex(record, colIndex, index);
                                } else if (0 == type.CompareTo("string[]")) {
                                    int index = -1;
                                    if (!string.IsNullOrEmpty(val)) {
                                        string[] vals = val.Split(',', ';', '|', ' ');
                                        index = table.AddStrList(vals);
                                    }
                                    WriteIndex(record, colIndex, index);
                                }
                            } catch (Exception ex) {
                                LogSystem.Error("[line:{0} col:{1}] “{2}”, exception:{3}\n{4}", rowIndex + 1, colIndex + 1, lines[rowIndex], ex.Message, ex.StackTrace);
                            }
                            ++colIndex;
                        }
                    }
                    table.Save(outFile);
                }
                return true;
            } catch (Exception ex) {
                LogSystem.Error("exception:{0}\n{1}", ex.Message, ex.StackTrace);
                return false;
            }
        }