void searchFileAdd2List() { if (sJHCurrent != "" && subDir != "") { this.tssInfor.Text = "智能搜索路径:" + dirAtuoSelect; //遍历文件 string[] files = Directory.GetFiles(dirAtuoSelect, "*.*", System.IO.SearchOption.AllDirectories); foreach (string NextFile in files) { if (NextFile.IndexOf(sJHCurrent) >= 0) { //查找文件,添加到文件 if (NextFile.ToLower().IndexOf(sJHCurrent.ToLower()) >= 0) { DialogResult dialogResult = MessageBox.Show("目录下搜索到: " + Path.GetFileName(NextFile) + Environment.NewLine + "路径: " + Path.GetFullPath(NextFile) + Environment.NewLine + "是否添加到资料库?", sJHCurrent + " 智能查找", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { addFile(NextFile); } } } } } else { MessageBox.Show("请选择操作目标路径。"); } //在目录下迭代搜索井号相似文件 }
//转到给定路径 private void bt_Goto_Click(object sender, EventArgs e) { tb_SearchFile.Text = "请输入搜索内容!"; tb_SearchFile.ForeColor = Color.Gray; if (tb_FilePath.Text == "请输入路径!" || tb_FilePath.Text == "") { MessageBox.Show("路径为空!"); tb_FilePath.Text = "请输入路径!"; tb_FilePath.ForeColor = Color.Gray; } else { m_strPath = tb_FilePath.Text; DirectoryInfo TheFolder = new DirectoryInfo(m_strPath); if (TheFolder.Exists) { lvw_FileList.Items.Clear(); foreach (System.IO.FileInfo NextFile in TheFolder.GetFiles()) { ListViewItem item = new ListViewItem(); item.Text = NextFile.ToString(); item.SubItems.Add(NextFile.LastAccessTime.ToString()); item.SubItems.Add(GetFileType(NextFile.Name)); lvw_FileList.Items.Add(item); } tb_FilePath.Text = "当前路径:" + tb_FilePath.Text; } else { MessageBox.Show("路径不存在,请重新输入!"); } } }
/* * 删除数据并无视异常 */ static public void DeleteOldFile() { try { DirectoryInfo floder = new DirectoryInfo(RunningEnv.ProgramParam.ToCheckTxtPaperPath); FileInfo[] fileInfo = floder.GetFiles(); foreach (FileInfo NextFile in fileInfo) { NextFile.Delete(); } floder = new DirectoryInfo(RunningEnv.ProgramParam.ReportPath); fileInfo = floder.GetFiles(); foreach (FileInfo NextFile in fileInfo) { NextFile.Delete(); } floder = new DirectoryInfo(RunningEnv.ProgramParam.ReportDataPath); fileInfo = floder.GetFiles(); foreach (FileInfo NextFile in fileInfo) { NextFile.Delete(); } } catch { } }
public static void Delete(int day) { if (day > 0) { DateTime keepDay = DateTime.Now.AddDays(-day); //if (string.IsNullOrEmpty(saveFolder)) //{ // DBHelper db = new DBHelper(); // DataTable dt = db.RunTxtDataTable("select * from TN_SyncStrategy"); // saveFolder = dt.Rows[0]["Col_LogFilePath"].ToString(); //} string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "C:\\"); if (Directory.Exists(filePath)) { DirectoryInfo d = new DirectoryInfo(filePath); FileInfo[] fileInfo = d.GetFiles(); foreach (FileInfo NextFile in fileInfo) //遍历文件 { DateTime createtime = NextFile.CreationTime; if (DateTime.Compare(createtime, keepDay) < 0) { AddLog("删除日志文件" + NextFile.Name); NextFile.Delete(); } } } } }
/// <summary> /// 选择壁纸保存路径 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void savePathBox_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { string nowSavePath = this.savePathBox.Text; FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "请选择壁纸存放路径"; object isOk = dialog.ShowDialog(); if (isOk.ToString().Equals("OK")) { string newPath = dialog.SelectedPath; this.savePathBox.Text = newPath; // 目录改变,移动已保存的壁纸 if (!nowSavePath.Equals("") && !nowSavePath.Equals(newPath)) { DirectoryInfo TheFolder = new DirectoryInfo(nowSavePath); foreach (FileInfo NextFile in TheFolder.GetFiles()) { NextFile.MoveTo(newPath + NextFile.FullName); } Directory.Delete(nowSavePath, true); } this.setConfig("savePath", newPath); } // 复制聚焦壁纸 this.copyWallpaper(true); }
public void delete_check_data_file() { try { DirectoryInfo textFolder33 = new DirectoryInfo(to_check_txt_paper); DirectoryInfo textFolder11 = new DirectoryInfo(report); DirectoryInfo textFolder22 = new DirectoryInfo(report_data); FileInfo[] fileInfo = textFolder33.GetFiles(); foreach (FileInfo NextFile in fileInfo) { NextFile.Delete(); } fileInfo = textFolder11.GetFiles(); foreach (FileInfo NextFile in fileInfo) { NextFile.Delete(); } fileInfo = textFolder22.GetFiles(); foreach (FileInfo NextFile in fileInfo) { NextFile.Delete(); } } catch {} }
static byte[] TinyPasswordByte = BitConverter.GetBytes(TinyPasswordInt); //密码缓存 //开始压缩图片 public static void TinyPng(string path, DirectoryInfo theFolder) { if (theFolder == null) { theFolder = new DirectoryInfo(@path); } //遍历文件 foreach (FileInfo NextFile in theFolder.GetFiles()) { string strType = NextFile.Extension.ToLower(); if (strType == ".png" || strType == ".jpg") //只判断图片 { var fileData = NextFile.OpenRead(); //读取密码 fileData.Seek(-8, SeekOrigin.End); fileData.Read(ulongRead, 0, 8); fileData.Close(); if (TinyPasswordInt != System.BitConverter.ToUInt64(ulongRead, 0)) { //没找到密码说明是新的 TinyCmdList.Add("./pngquant/pngquant " + Util.config.TinyParm + " " + NextFile.FullName + " --ext .png --force --skip-if-larger"); TinyFileList.Add(NextFile.FullName, (int)NextFile.Length); } } } //遍历文件夹 foreach (DirectoryInfo NextFolder in theFolder.GetDirectories()) { TinyPng(NextFolder.FullName, NextFolder); } }
/// <summary> /// 只能对某个文件夹进行遍历 /// </summary> public static void ScanDirectoryInfo() { DirectoryInfo theFolder = new DirectoryInfo(@"D:\temp"); DirectoryInfo[] dirInfo = theFolder.GetDirectories(); foreach (DirectoryInfo NextFolder in dirInfo)//遍历文件夹 { FileInfo[] fileInfo = NextFolder.GetFiles(); foreach (FileInfo NextFile in fileInfo) //遍历文件 { if (Path.GetExtension(NextFile.ToString()) == ".exe") { temppath.Add(NextFile.FullName); Console.WriteLine(NextFile.FullName); count++; } } } #region MyRegion //for (int i = 0; i < count; i++) //{ // string temp = temppath[i].ToString(); // int len = temp.Length; // finallypath.Add(temppath[i].ToString().Substring(0, len - 4)); // lastpath.Add(finallypath[i] + ".jpg"); //} //for (int i = 0; i < count; i++) //{ // File.Copy(temppath[i].ToString(), lastpath[i].ToString()); // File.Delete(temppath[i].ToString()); //} //MessageBox.Show("转换完成!"); #endregion }
private void cleanPicture() { try { string path = Environment.CurrentDirectory + @"\picture"; DirectoryInfo TheFolder = new DirectoryInfo(path); foreach (FileInfo NextFile in TheFolder.GetFiles())//遍历文件 { string fileName = (NextFile.Name); if (fileName == "defaultAvatar.jpg") { continue; } string[] s = fileName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries); if (s.Length != 2) { NextFile.Delete(); continue; } UInt32 uID = (UInt32)Convert.ToInt32(s[0]); //用户号 string userName = s[1].Replace(".jpg", ""); //姓名 int index = personnelManagement.uIDtoIndex(uID); if ((index < 0) || (personnelManagement.PersonList[index].name != userName)) { NextFile.Delete(); } } } catch (Exception ex) { output(ex.Message); } }
static public void CleanCache() { if (Common.isWeb) { return; } string path = GetCachePath(); if (BlankString(path)) { return; } // C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder = new DirectoryInfo(path); // //遍历文件夹 // foreach(DirectoryInfo NextFolder in TheFolder.GetDirectories()) // this.listBox1.Items.Add(NextFolder.Name); // //遍历文件 foreach (FileInfo NextFile in TheFolder.GetFiles()) { NextFile.Delete(); } // this.listBox2.Items.Add(NextFile.Name); }
/// <summary> /// 清理全部过期图片 /// </summary> public ResultJson ClearAllTempImage() { var url = HttpContext.Current.Server.MapPath("/current/images/temp"); var ClearTime = MemCacheHelper2.Instance.Cache.GetModel <DateTime?>("ClearTime"); var flag = false; #region 查看是否到清理时间 if (ClearTime != null) { if (ClearTime.Value.Day != DateTime.Now.Day) { flag = true; MemCacheHelper2.Instance.Cache.Set("ClearTime", DateTime.Now); } } else { MemCacheHelper2.Instance.Cache.Set("ClearTime", DateTime.Now); flag = true; } #endregion if (flag) { #region 清除临时文件夹下超过3天的图片; DirectoryInfo TheFolder = new DirectoryInfo(url); foreach (FileInfo NextFile in TheFolder.GetFiles()) { if (DateTime.Now.Subtract(NextFile.CreationTime).TotalDays > 3) { NextFile.Delete(); } } #endregion #region 清除超过三天历史设计的图片(没有登入的用户) var Listhisdesign = HisdesignFunc.Instance.GetAllHisdesignInfo(); foreach (var item in Listhisdesign) { var deleteFlag = false; if (item.LastLookTime.Value == null) { deleteFlag = true; } else if (DateTime.Now.Subtract(item.LastLookTime.Value).TotalDays > 3 && item.UserID == null) { deleteFlag = true; } if (deleteFlag) { var dirFile = $"/current/images/Order/{item.Id}"; FileHelper.Instance.DelectDir(HttpContext.Current.Server.MapPath(dirFile)); HisdesignFunc.Instance.DeleteHisdesignById(item.Id); } } #endregion } return(new ResultJson { HttpCode = 200, Message = "删除成功!" }); }
//点击查询 private void bt_Search_Click(object sender, EventArgs e) { if (tb_SearchFile.Text == "请输入搜索内容!" || tb_SearchFile.Text == "") { MessageBox.Show("搜索内容为空!"); tb_SearchFile.Text = "请输入搜索内容!"; tb_SearchFile.ForeColor = Color.Gray; } else { DirectoryInfo TheFolder = new DirectoryInfo(m_strPath); //遍历文件 if (TheFolder.Exists) { lvw_FileList.Items.Clear(); foreach (System.IO.FileInfo NextFile in TheFolder.GetFiles()) { if (NextFile.ToString().Contains(tb_SearchFile.Text)) { ListViewItem item = new ListViewItem(); item.Text = NextFile.ToString(); item.SubItems.Add(NextFile.LastAccessTime.ToString()); item.SubItems.Add(GetFileType(NextFile.Name)); lvw_FileList.Items.Add(item); } } } tb_SearchFile.Text = "当前搜索内容:" + tb_SearchFile.Text; } }
static void DeleteTxt(string path) { DirectoryInfo directory = new DirectoryInfo(path); foreach (var NextFile in directory.GetFiles("*.txt", SearchOption.AllDirectories)) { NextFile.Delete(); } }
public TarFile(TarEntry entry) { if (!entry.CanRead) { throw new ArgumentException("Can't read stream"); } _callback = () => null; _actualStream = entry; }
public TarFile(NextFile callback) { _callback = callback; _actualStream = _callback(); if (!_actualStream.CanRead) { throw new ArgumentException("Stream given by callback is not readable"); } }
void CreateGuankaJsonFile() { string strPlace = "树木"; string path = Application.streamingAssetsPath + "/" + Common.GAME_RES_DIR + "/image/" + strPlace; string path_new = path + "_new"; int width_save = 1024; int height_save = 768; //创建文件夹 Directory.CreateDirectory(path_new); listGuankaJson = new List <GuankaJsonItemInfo>(); // C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder = new DirectoryInfo(path); int idx = 0; // //遍历文件 foreach (FileInfo NextFile in TheFolder.GetFiles()) { string fullpath = NextFile.ToString(); //1.jpg // Debug.Log(NextFile.Name); string ext = FileUtil.GetFileExt(fullpath); if ((ext == "png") || (ext == "jpg")) { string name = idx.ToString() + "." + ext; string filepath_new = NextFile.ToString(); //重命名 //filepath_new = path + "/" + name; // NextFile.MoveTo(filepath_new); GuankaJsonItemInfo info = new GuankaJsonItemInfo(); //info.pic = NextFile.Name; info.id = FileUtil.GetFileName(NextFile.Name); listGuankaJson.Add(info); idx++; } } //save guanka json { Hashtable data = new Hashtable(); data["place"] = strPlace; data["items"] = listGuankaJson; string strJson = JsonMapper.ToJson(data); //Debug.Log(strJson); string filepath = path_new + "/guanka.json"; byte[] bytes = Encoding.UTF8.GetBytes(strJson); System.IO.File.WriteAllBytes(filepath, bytes); } Debug.Log("CreateGuankaJsonFile Finished"); }
static void DeleteExtTxt(DirectoryInfo folder, string pattern) { foreach (var NextFile in folder.GetFiles(pattern + ".txt")) { NextFile.Delete(); } foreach (DirectoryInfo next in folder.GetDirectories()) { DeleteExtTxt(next, pattern); } }
public static void SearchInSubfolders(object obj) { FileWorkMain thisform = (FileWorkMain)obj; string text = thisform.tb_SearchFile.Text; DirectoryInfo TheFolder = new DirectoryInfo(m_strPath); DirectoryInfo[] Subfolders = TheFolder.GetDirectories(); if (thisform.InvokeRequired) { RefreshFileList delegateFunc = new RefreshFileList(SearchInSubfolders); thisform.Invoke(delegateFunc, thisform); } else { try { for (int i = 0; i < Subfolders.Length; i++) { thisform.pgb_isFinish.Value += thisform.pgb_isFinish.Step; foreach (System.IO.FileInfo NextFile in Subfolders[i].GetFiles()) { if (text != "请输入搜索内容!") { if (NextFile.ToString().Contains(text)) { ListViewItem item = new ListViewItem { Text = NextFile.FullName }; item.SubItems.Add(NextFile.LastAccessTime.ToString()); item.SubItems.Add(GetFileType(NextFile.Name)); thisform.lvw_FileList.Items.Add(item); } } else { ListViewItem item = new ListViewItem(); item.Text = NextFile.FullName; item.SubItems.Add(NextFile.LastAccessTime.ToString()); item.SubItems.Add(GetFileType(NextFile.Name)); thisform.lvw_FileList.Items.Add(item); } } } } catch { } } }
/// <summary> /// コンストラクタ /// </summary> public KeyBind(ImageOperation imgope) { // TODO:仮のキーバインド dictionary.Add(KeyList.MouseLeftClick, ActionList.None); dictionary.Add(KeyList.MouseRightClick, ActionList.None); dictionary.Add(KeyList.MouseLeftDoubleClick, ActionList.NextFile); dictionary.Add(KeyList.MouseRightDoubleClick, ActionList.PrevFile); dictionary.Add(KeyList.MouseScrollUp, ActionList.Prev); dictionary.Add(KeyList.MouseScrollDown, ActionList.Next); next = new Next(imgope.Next); prev = new Prev(imgope.Prev); nextfile = new NextFile(imgope.NextFile); prevfile = new PrevFile(imgope.PrevFile); }
/// <summary> /// 删除文件夹下所有内容 /// </summary> /// <param name="folder"></param> private void DeleteFolder(DirectoryInfo folder) { FileInfo[] fileInfo = folder.GetFiles(); //遍历文件 foreach (FileInfo NextFile in fileInfo) { NextFile.Delete(); } DirectoryInfo[] folders = folder.GetDirectories(); foreach (var item in folders) { DeleteFolder(item); } folder.Delete(); }
private void button1_Click(object sender, EventArgs e) { Random rand = new Random(DateTime.Now.Second); string dir = textBox2.Text; string pfx = textBox3.Text; string ext = textBox4.Text; DirectoryInfo TheFolder = new DirectoryInfo(dir); //遍历文件 foreach (FileInfo NextFile in TheFolder.GetFiles("*" + ext)) { string NewFilename = string.Format("{0}\\{1}{2}{3}", dir, pfx, rand.NextDouble().ToString().Substring(2, 10), ext); textBox1.Text += string.Format("Old:{0} new:{1}\r\n", NextFile.FullName, NewFilename); NextFile.MoveTo(NewFilename); } //this.listBox2.Items.Add(NextFile.Name); }
private void dealfile(DirectoryInfo theFolder) { DirectoryInfo[] dirInfo = theFolder.GetDirectories(); foreach (FileInfo NextFile in theFolder.GetFiles()) //遍历文件 { if (!IsFileType(NextFile)) { continue; } fileIndex++; this.label1.Text = "正在处理第 " + fileIndex + " 个文件"; System.Windows.Forms.Application.DoEvents(); string fileKey = getFileKey(NextFile);//via fileName and size to identidy file if (!fileInfo.Keys.Contains(fileKey)) { fileInfo.Add(fileKey, NextFile.FullName); } else { string text = "文件序号" + fileIndex + ":" + NextFile.Name + ",大小:" + NextFile.Length + "字节。"; this.textBox1.Text += text + "是重复文件。\r\n"; if (Directory.Exists(dumpfilefolderName) == false)//如果不存在就创建文件夹 { Directory.CreateDirectory(dumpfilefolderName); } //将重复文件剪切到指定文件夹 try { WriteFile(dumpfilefolderName + @"\movelog.txt", text + "保留原始文件" + fileInfo[fileKey] + ",来自" + NextFile.FullName + "被移出。"); string fileNewName = NextFile.Name.Substring(0, NextFile.Name.IndexOf(".")) + NextFile.Length + NextFile.Name.Substring(NextFile.Name.IndexOf("."), NextFile.Name.Length - NextFile.Name.IndexOf(".")); NextFile.MoveTo(dumpfilefolderName + @"\" + fileNewName); dupfiles++; savebit += NextFile.Length; } catch { } } // this.listBox2.Items.Add(); } //递归遍历文件夹 foreach (DirectoryInfo NextFolder in dirInfo) { dealfile(NextFolder); } }
public static void SearchFiles(ListView FileList, string text = "请输入搜索内容!") { DirectoryInfo TheFolder = new DirectoryInfo(m_strPath); DirectoryInfo[] Subfolders = TheFolder.GetDirectories(); if (TheFolder.Exists) { try { FileList.Items.Clear(); foreach (System.IO.FileInfo NextFile in TheFolder.GetFiles()) { if (text != "请输入搜索内容!") { if (NextFile.ToString().Contains(text)) { ListViewItem item = new ListViewItem(); item.Text = NextFile.Name; item.SubItems.Add(NextFile.LastAccessTime.ToString()); item.SubItems.Add(GetFileType(NextFile.Name)); FileList.Items.Add(item); } } else { ListViewItem item = new ListViewItem(); item.Text = NextFile.Name; item.SubItems.Add(NextFile.LastAccessTime.ToString()); item.SubItems.Add(GetFileType(NextFile.Name)); FileList.Items.Add(item); } } } catch { } } else { MessageBox.Show("文件夹不存在"); } }
public static void DeleteDirectory(string dir) { DirectoryInfo theFolder = new DirectoryInfo(dir); //删除子文件 FileInfo[] fileInfo = theFolder.GetFiles(); foreach (FileInfo NextFile in fileInfo) //遍历文件 { NextFile.Delete(); } //删除子文件夹 DirectoryInfo[] dirInfo = theFolder.GetDirectories(); //遍历文件夹 foreach (DirectoryInfo NextFolder in dirInfo) { DeleteDirectory(NextFolder.FullName); } Directory.Delete(dir); }
private void label2_Click(object sender, EventArgs e) { int num = 0; long length = 0; DirectoryInfo TheFolder = new DirectoryInfo(System.Windows.Forms.Application.StartupPath + "\\bin"); //遍历文件 foreach (FileInfo NextFile in TheFolder.GetFiles()) { if (NextFile.Name.Contains("模板") || NextFile.Name.Contains("~$")) { length += NextFile.Length; NextFile.Delete(); num += 1; } } var value = CountSize(length); MessageBox.Show("删除了" + num.ToString() + "个" + value + "文件"); }
public static void ClearManifestFile() { string path = Path.Combine(System.Environment.CurrentDirectory, outputPath); DirectoryInfo TheFolder = new DirectoryInfo(path); float p = 0.2f; //遍历文件夹 foreach (FileInfo NextFile in TheFolder.GetFiles()) { if (NextFile.Name.EndsWith(".manifest")) { p = p > 1.0f ? 0.2f : (p + 0.2f); // Debug.Log("clear file name: "+ NextFile.Name); EditorUtility.DisplayProgressBar("清理manifest", NextFile.Name, p); NextFile.Delete(); } } EditorUtility.ClearProgressBar(); }
//获取本地图片及保存时间如果大于7天删除 public void ClearPic() { //List<string> list = new List<string>(); DirectoryInfo theFolder = new DirectoryInfo(path); string time = ""; string nowTime = GetTimeStamp(DateTime.Now); //遍历文件获取文件名 foreach (FileInfo NextFile in theFolder.GetFiles()) { //list.Add(NextFile.Name); time = PlayerPrefs.GetString(NextFile.Name); if (time != "") { if (int.Parse(nowTime) - int.Parse(time) > 60) { NextFile.Delete(); PlayerPrefs.DeleteKey(NextFile.Name); } } } }
static void ClearPlist(string path, DirectoryInfo theFolder) { if (theFolder == null) { if (!Directory.Exists(path)) //文件夹不存在 { return; } theFolder = new DirectoryInfo(@path); FirstOutDirHead = theFolder.Name; } else { var strFolder = Util.config.PlistLoadDir + "\\" + theFolder.FullName.Remove(0, theFolder.FullName.IndexOf(FirstOutDirHead) + FirstOutDirHead.Length + 1); if (!Directory.Exists(strFolder)) //源文件夹没这个目录,直接删除 { theFolder.Delete(true); return; } } //遍历文件 foreach (FileInfo NextFile in theFolder.GetFiles()) { string strType = NextFile.Extension.ToLower(); if (strType == ".png" || strType == ".jpg" || strType == ".plist") { NextFile.Delete(); } } //遍历文件夹 foreach (DirectoryInfo NextFolder in theFolder.GetDirectories()) { ClearPlist(NextFolder.FullName, NextFolder); } }
/// <summary> /// 自己实现文件遍历包括文件夹 /// </summary> /// <param name="theFolder"></param> /// <param name="path"></param> public static void ScanInfo(DirectoryInfo theFolder, string path) { theFolder = new DirectoryInfo(@"" + path + ""); DirectoryInfo[] dirInfo = theFolder.GetDirectories(); //只能获取文件夹 foreach (DirectoryInfo NextFolder in dirInfo) //只获取文件夹 { ScanInfo(NextFolder, NextFolder.FullName); } FileInfo[] fileInfo = theFolder.GetFiles(); //获取文件 Console.WriteLine(theFolder.FullName); //获取文件夹目录 foreach (FileInfo NextFile in fileInfo) //遍历文件 { bool ss = Path.GetExtension(NextFile.ToString()).Contains("."); if (ss) { temppath.Add(NextFile.FullName); Console.WriteLine(NextFile.FullName); count++; } } }
static byte[] PlistPasswordByte = BitConverter.GetBytes(PlistPasswordInt); //密码缓存 public static void PackPlist(string path, DirectoryInfo theFolder) { string outFolder; //输出目录 string head = ""; if (theFolder == null) { theFolder = new DirectoryInfo(@path); outFolder = Util.config.PlistOutDir + "\\"; //目标文件夹 FirstLoadDirHead = theFolder.Name; //主目录 } else { head = theFolder.FullName.Remove(0, theFolder.FullName.IndexOf(FirstLoadDirHead) + FirstLoadDirHead.Length + 1); outFolder = Util.config.PlistOutDir + "\\" + head + "\\"; //目标文件夹 } //目标文件夹不存在就创建 if (!Directory.Exists(outFolder)) { Directory.CreateDirectory(outFolder); } bool IsPlistChange = false; //图集图片发生改变 bool IsHaveImage = false; //目录下是否有图片 bool IsHavePlistImage = false; //是否有需要打包的图片 int ImageWidth = 0; //图片宽度 int ImageHeight = 0; //图片高度 //遍历文件夹 foreach (DirectoryInfo NextFolder in theFolder.GetDirectories()) { PackPlist(NextFolder.FullName, NextFolder); } List <string> ImageRecord = null; FolderImageRecord.TryGetValue(head, out ImageRecord); //遍历文件 foreach (FileInfo NextFile in theFolder.GetFiles()) { string strType = NextFile.Extension.ToLower(); if (strType == ".png" || strType == ".jpg") //只判断图片 { IsHaveImage = true; bool IsNewImage = false; var fileData = NextFile.Open(FileMode.Open); //读取密码 fileData.Seek(-8, SeekOrigin.End); fileData.Read(ulongRead, 0, 8); if (PlistPasswordInt != System.BitConverter.ToUInt64(ulongRead, 0)) { //没找到密码说明是新的 IsNewImage = true; fileData.Seek(0, SeekOrigin.End); fileData.Write(PlistPasswordByte, 0, 8); } //从缓存中取出数据 string key = head + "\\" + NextFile.Name + "_" + fileData.Length; string data = null; if (ImageRecord != null) { ImageRecord.Remove(key); } if (OldImageInfo != null) { OldImageInfo.TryGetValue(key, out data); } if (data != null) { //找到缓存了 NewImageInfo.Add(key, data); var value = data.Split('|'); ImageWidth = int.Parse(value[0]); ImageHeight = int.Parse(value[1]); } else { //没缓存,是新图片 IsNewImage = true; System.Drawing.Image image = System.Drawing.Image.FromStream(fileData); ImageWidth = image.Width; ImageHeight = image.Height; NewImageInfo.Add(key, ImageWidth + "|" + ImageHeight); } //关闭文件 fileData.Close(); //大图需要剪切 if (Util.config.OnlyCopyFiles.IndexOf(NextFile.Name) >= 0 || (ImageHeight >= Util.config.CopyFileHeight && ImageWidth >= Util.config.CopyFileWidth)) { string strSrc = NextFile.FullName; string strDesc = outFolder + Util.GetTimeStamp() + "_" + NextFile.Name; string strCopy = outFolder + NextFile.Name; File.Move(strSrc, strDesc); ImageMoveMap.Add(strSrc, strDesc); //目标位置没有图片 if (!File.Exists(strCopy)) { File.Copy(strDesc, strCopy); LogOut.Add("ImageCopy: " + strCopy); } } else { IsHavePlistImage = true; if (IsNewImage) { //小图需要合并图集 IsPlistChange = true; } } } } //有图片被删掉了,强制生成 if (ImageRecord != null && ImageRecord.Count > 0) { IsPlistChange = true; } //导出的名字 string PlistName = theFolder.Name; if (FirstLoadDirHead == PlistName) { PlistName = Util.config.PlistOutDir; PlistName = PlistName.Remove(0, PlistName.LastIndexOf("\\") + 1); } //plist是否存在 if (!IsPlistChange && IsHavePlistImage && (!File.Exists(outFolder + PlistName + ".png") || !File.Exists(outFolder + PlistName + ".plist"))) { IsPlistChange = true; } //必须有图片,有改变或者强制才导出图集 if (IsHaveImage && (IsPlistChange || Util.config.IsForceOutPlist)) { int MaxPlistSize = Util.config.MaxPlistSize; if (Util.config.OnlyOnePlist.IndexOf(head) >= 0) //判断是否单图模式 { MaxPlistSize = 16384; } //为了优化时间,只有在添加满足图集条件的新图片时才导出, 删除图片不检测。 //--multipack \"{n1}\" 多图模式有问题,不要用,分子文件夹 LogOut.Add("PackPlist: " + path + " PlistSize: " + MaxPlistSize); string cmd = "./TexturePacker/bin/TexturePacker --allow-free-size --opt RGBA8888 --format cocos2d --enable-rotation --trim-sprite-names"; if (!Util.config.IsForceOutPlist) { cmd += " --smart-update"; //强制导出模式 } cmd += " --ignore-files */" + theFolder.Name + "/*/*"; //忽略子文件夹 cmd += " --max-size " + MaxPlistSize; //图集最大尺寸 cmd += " --sheet " + outFolder + PlistName + ".png"; //图片 cmd += " --data " + outFolder + PlistName + ".plist"; //plist cmd += " " + path; //来源 PlistCmdList.Add(cmd); } }