| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- using DevExpress.XtraEditors;
- using Ips.Library.Basic;
- using Ips.Library.DxpLib;
- using Ips.Sps.Tools.SignalDdces;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Diagnostics;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Text.Json;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Ips.Sps.Tools.FileConcats
- {
- public partial class FileConcatMainCtrl : DevExpress.XtraEditors.XtraUserControl
- {
- public FileConcatMainCtrl()
- {
- InitializeComponent();
- gvMain.UseDefaultSettings(new GridViewDefaultSetting() { DefaultEmptyDisplayText = false, Editable = true, ShowRowNum = true });
- }
- string vmfile = Path.Combine(SpsConst.VmFolder, "fileconcat.json");
- FileConcatViewModel vm;
- private void FileConcatMainCtrl_Load(object sender, EventArgs e)
- {
- if (File.Exists(vmfile))
- {
- vm = JsonSerializer.Deserialize<FileConcatViewModel>(File.ReadAllText(vmfile));
- }
- else
- {
- vm = new FileConcatViewModel();
- }
- bsMain.DataSource = vm;
- }
- private void OutFileButtonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
- {
- OutFileButtonEdit.EditValue = ToolDialog.SaveFile("", "选择输入文件");
- }
- private void InFileEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
- {
- gvMain.EditingValue = ToolDialog.OpenFile("", "选择输入文件");
- }
- private void btnConcat_Click(object sender, EventArgs e)
- {
- if (HasError()) return;
- string jsonText = JsonSerializer.Serialize(vm, new JsonSerializerOptions() { WriteIndented = true });
- File.WriteAllText(vmfile, jsonText);
- var notFoundFiles = vm.FileList.Where(m => !File.Exists(m.FileName)).Select(m => m.FileName).ToList();
- if (notFoundFiles.IsNotNullOrEmpty())
- {
- MsgHelper.ShowError($"{notFoundFiles.JoinAsString(";")}不存在!");
- return;
- }
- using var fsOut = new FileStream(vm.OutFile, FileMode.OpenOrCreate, FileAccess.Write);
- for (int i = 0; i < vm.FileList.Count; i++)
- {
- var item = vm.FileList[i];
- using var fsIn = new FileStream(item.FileName, FileMode.Open, FileAccess.Read);
- if (item.AddZeroPrev > 0)
- fsOut.Seek(item.AddZeroPrev * 4, SeekOrigin.Current);
- fsIn.CopyTo(fsOut);
- if (item.AddZeroBack > 0)
- fsOut.Seek(item.AddZeroBack * 4, SeekOrigin.Current);
- }
- fsOut.SetLength(fsOut.Position);
- bool openFolder = MsgHelper.ShowConfirm("文件拼接成功,是否打开目录?");
- if (openFolder)
- {
- Process.Start("explorer", Path.GetDirectoryName(vm.OutFile));
- }
- }
- private bool HasError()
- {
- if (vm.OutFile.IsNullOrWhitespace())
- {
- dxError.SetError(OutFileButtonEdit, "请选择输出文件");
- }
- if (vm.FileList.Where(m => m.FileName.IsNotNullOrWhitespace()).IsNullOrEmpty())
- {
- dxError.SetError(grdMain, "至少添加一个输入文件");
- }
- return dxError.HasErrors;
- }
- }
- }
|