private void MakeInputOutput(string dir) { try { //open input file string input = Path.Combine(dir, "input.txt"); LocalDirectory.CreateFile(input); inputTextBox.ReadOnly = false; OpenedInput = input; OpenInputFile(input); //open output file string output = Path.Combine(dir, "output.txt"); LocalDirectory.CreateFile(output); OpenedOutput = output; OpenOutputFile(output); //open correct output file string correct = Path.Combine(dir, "correct.txt"); LocalDirectory.CreateFile(correct); correctOutputTextBox.ReadOnly = false; OpenedCorrect = correct; OpenCorrectFile(correct); } catch { } }
private void ProcessDirectory(LocalDirectory parentDirectory, IO.DirectoryInfo directoryInfo) { if (parentDirectory == null) { throw new ArgumentNullException(nameof(parentDirectory)); } if (directoryInfo == null) { throw new ArgumentNullException(nameof(directoryInfo)); } try { LocalDirectory directory = (LocalDirectory)parentDirectory.GetSubdirectory(directoryInfo.Name); if (directory == null) { directory = parentDirectory.CreateSubDirectory(directoryInfo.Name, directoryInfo.FullName); } foreach (var fileInfo in directoryInfo.EnumerateFiles().Where(f => !f.Name.StartsWith("."))) { IndexingFile?.Invoke(this, new FilenameEventArgs(fileInfo.FullName)); LocalFile file = (LocalFile)directory.GetFile(fileInfo.Name); if (file == null) { file = directory.CreateFile(fileInfo); } else { // XXX: Update file info } if (string.IsNullOrEmpty(file.InfoHash)) { this.hasher.HashFile(file); } } foreach (var subDirectoryInfo in directoryInfo.EnumerateDirectories().Where(d => !d.Name.StartsWith("."))) { //ProcessDirectory(directory, subDirectoryInfo); this.queue.Add(new QueueItem(directory, subDirectoryInfo), this.cancellation.Token); } } catch (ThreadAbortException) { // Canceled, ignore error. } catch (Exception ex) { this.loggingService.LogError("Error while re-indexing shared files:", ex); ErrorIndexing?.Invoke(this, new ErrorEventArgs(ex)); } }
public void AddProblem(long pnum) { //get code path string path = LocalDirectory.GetCodesPath(pnum); if (string.IsNullOrEmpty(path)) { return; } //get language CodeFileCreator cfc = new CodeFileCreator(); if (cfc.ShowDialog() != DialogResult.OK) { return; } Structures.Language lang = cfc.Language; cfc.Dispose(); //get file extension string ext = ".cpp"; if (lang == Structures.Language.C) { ext = ".c"; } else if (lang == Structures.Language.Java) { ext = ".java"; } else if (lang == Structures.Language.Pascal) { ext = ".pascal"; } //create code file string name = Path.GetFileName(path); CreateFile(path, name, ext); //create input-output string input = Path.Combine(path, "input.txt"); string output = Path.Combine(path, "output.txt"); string correct = Path.Combine(path, "correct.txt"); LocalDirectory.CreateFile(input); LocalDirectory.CreateFile(output); LocalDirectory.CreateFile(correct); ParseInputOutput(pnum, input, correct); //select created problem this.BeginInvoke((MethodInvoker) delegate { ExpandAndSelect(LocateProblem(pnum), ExpandSelectType.SelecFirstChild); }); }
public static void CreateFile(string par, string name, string ext, bool trial = true) { if (string.IsNullOrEmpty(par)) { return; } int tcount = 1; string path = Path.Combine(par, name + ext); while (trial && File.Exists(path)) { path = Path.Combine(par, string.Format("{0} ({1}){2}", name, tcount, ext)); ++tcount; } LocalDirectory.CreateFile(path); }