/// <summary> /// Set whether or not to read headers. /// </summary> public OptionsBuilder WithReadHeader(ReadHeader readHeader) { if (!Enum.IsDefined(Types.ReadHeader, readHeader)) { Throw.ArgumentException($"Unexpected {nameof(Cesil.ReadHeader)} value: {readHeader}", nameof(readHeader)); } return(WithReadHeaderInternal(readHeader)); }
internal unsafe void Initialize( CharacterLookup preAllocLookup, char?escapeStartChar, char?escapeChar, ReadRowEnding rowEndings, ReadHeader hasHeaders, bool readingComments, bool skipLeadingWhitespace, bool skipTrailingWhitespace ) { CharacterLookup = preAllocLookup; CharLookup = (CharacterType *)preAllocLookup.Memory; RowEndings = rowEndings; HasHeaders = hasHeaders; switch (HasHeaders) { case ReadHeader.Always: CurrentState = State.Header_Start; break; case ReadHeader.Never: CurrentState = State.Record_Start; break; default: Throw.InvalidOperationException($"Unexpected {nameof(ReadHeader)}: {HasHeaders}"); break; } TransitionMatrix = GetTransitionMatrix( RowEndings, escapeStartChar.HasValue && escapeStartChar == escapeChar, readingComments, skipLeadingWhitespace, skipTrailingWhitespace, #if DEBUG out TransitionMatrixMemoryOffset #else out _ #endif ); }
private void ReadHeader_Click(object sender, RoutedEventArgs e) { ReadHeader?.Invoke(this, new RoutedEventArgs()); }
private async void button1_Click(object sender, EventArgs e) { //ファイルを開く OpenFileDialog Open_ARC = new OpenFileDialog() { Title = "Open", InitialDirectory = @"C:\Users\User\Desktop", Filter = "arc file|*.arc" }; if (Open_ARC.ShowDialog() != DialogResult.OK) { return; } //ファイル名(拡張子なし)を取得 string FileName = System.IO.Path.GetFileNameWithoutExtension(Open_ARC.FileName); //ファイル名(拡張子付き)を取得 string FileName2 = System.IO.Path.GetFileName(Open_ARC.FileName); //ディレクトリを取得 string PathDir = System.IO.Path.GetDirectoryName(Open_ARC.FileName); //カレントディレクトリを取得 string CDir = System.IO.Directory.GetCurrentDirectory(); //ヘッダーの読み取り System.IO.FileStream fs1 = new FileStream(Open_ARC.FileName, FileMode.Open, FileAccess.Read); BinaryReader br1 = new BinaryReader(fs1); ReadHeader rh = new ReadHeader(); //ヘッダーの情報からRARCかYAZ0か判定 rh.Header = br1.ReadChars(4); if (new string(rh.Header) == "RARC") { br1.Close(); fs1.Close(); //フォルダを生成 FileSystem.CreateDirectory(PathDir + "\\" + FileName); //ファイルをコピー System.IO.File.Copy(Open_ARC.FileName, PathDir + "\\" + FileName + "\\" + FileName2, true); //arcファイルを解凍 //プロセス(arc) System.Diagnostics.Process arcExt = new System.Diagnostics.Process(); arcExt.StartInfo.FileName = CDir + "\\tools\\arcExtract.exe"; arcExt.StartInfo.Arguments = "\"" + PathDir + "\\" + FileName + "\\" + FileName2 + "\""; arcExt.StartInfo.UseShellExecute = true; //イベントハンドラがフォームを作成したスレッドで実行されるようにする arcExt.SynchronizingObject = this; arcExt.Exited += new EventHandler(arcExt_Exited); //プロセス終了時にイベントを発生させる arcExt.EnableRaisingEvents = true; arcExt.Start(); //ファイルの出力が完了するまでTask.Delayで待つ await Task.Delay(2000); //コピー先のファイル(arc)を削除 System.IO.File.Delete(PathDir + "\\" + FileName + "\\" + FileName2); } else if (new string(rh.Header) == "Yaz0") { br1.Close(); fs1.Close(); //フォルダを生成 FileSystem.CreateDirectory(PathDir + "\\" + FileName); //ファイルをコピー System.IO.File.Copy(Open_ARC.FileName, PathDir + "\\" + FileName + "\\" + FileName2, true); System.Diagnostics.Process arc_yaz0_Ext = new System.Diagnostics.Process(); arc_yaz0_Ext.StartInfo.FileName = CDir + "\\tools\\yaz0dec.exe"; arc_yaz0_Ext.StartInfo.Arguments = "\"" + PathDir + "\\" + FileName + "\\" + FileName2 + "\""; arc_yaz0_Ext.StartInfo.UseShellExecute = true; arc_yaz0_Ext.SynchronizingObject = this; arc_yaz0_Ext.Exited += new EventHandler(arc_yaz0_Ext_Exited); arc_yaz0_Ext.EnableRaisingEvents = true; arc_yaz0_Ext.Start(); //Yaz0の解凍が完了するまでTask.Delayで待つ await Task.Delay(2000); System.Diagnostics.Process arcExt = new System.Diagnostics.Process(); arcExt.StartInfo.FileName = CDir + "\\tools\\arcExtract.exe"; arcExt.StartInfo.Arguments = "\"" + PathDir + "\\" + FileName + "\\" + FileName2 + "\""; arcExt.StartInfo.UseShellExecute = true; arcExt.SynchronizingObject = this; arcExt.Exited += new EventHandler(arcExt_Exited); arcExt.EnableRaisingEvents = true; arcExt.Start(); //ファイルの出力が完了するまでTask.Delayで待つ await Task.Delay(2000); //コピー先のファイル(arc)を削除 System.IO.File.Delete(PathDir + "\\" + FileName + "\\" + FileName2); System.IO.File.Delete(PathDir + "\\" + FileName + "\\" + FileName2 + " 0.rarc"); } }
// sometimes we want to skip validation in tests internal OptionsBuilder WithReadHeaderInternal(ReadHeader r) { ReadHeader = r; return(this); }