/// <summary> /// 原音設定ファイルを読み込みます. /// </summary> /// <param name="oto_ini">原音設定のパス</param> private void readOtoIni(string oto_ini, string encoding_name, string db_root_directory) { // oto.ini読込み string dir = Path.GetDirectoryName(oto_ini); var encoding = Encoding.GetEncoding(encoding_name); using (var sr = new StreamReader(oto_ini, encoding)) { while (!sr.EndOfStream) { var line = sr.ReadLine(); string[] spl = line.Split('='); if (spl.Length < 2) { continue; } string file_name = spl[0]; // あ.wav string a2 = spl[1]; // ,0,36,64,0,0 string a1 = Path.GetFileNameWithoutExtension(file_name); spl = a2.Split(','); if (spl.Length < 6) { continue; } // ファイルがちゃんとあるかどうか? string fullpath = Path.Combine(dir, file_name); if (!File.Exists(fullpath)) { continue; } OtoArgs oa = new OtoArgs(); var full_file_name = Path.GetFullPath(Path.Combine(dir, file_name)); var full_root_directory = Path.GetFullPath(db_root_directory) + @"\"; oa.fileName = full_file_name.StartsWith(full_root_directory) ? full_file_name.Substring(full_root_directory.Length) : file_name; oa.Alias = spl[0]; oa.msOffset = parseOrDefault(spl[1]); oa.msConsonant = parseOrDefault(spl[2]); oa.msBlank = parseOrDefault(spl[3]); oa.msPreUtterance = parseOrDefault(spl[4]); oa.msOverlap = parseOrDefault(spl[5]); // 重複登録が無いかチェック if (configs_.All((item) => !item.equals(oa))) { configs_.Add(oa); } } } }