zoukankan      html  css  js  c++  java
  • C#文件操作简单封装

    1 public class FileManager
    2 {
    3 public bool IsHidden(string path)
    4 {
    5 FileAttributes attr = File.GetAttributes(path);
    6 if (attr.ToString().LastIndexOf("Hidden") != -1)
    7 return true;
    8 else
    9 return false;
    10 }
    11
    12 public void Mkdir(string dir)
    13 {
    14 DirectoryInfo info = new DirectoryInfo(dir);
    15 if (!info.Exists)
    16 info.Create();
    17 }
    18 /// <summary>
    19 /// 删除文件及其所有目录
    20 /// </summary>
    21 /// <param name="dir"></param>
    22 /// <param name="delSub"></param>
    23   public static void DelAll(string dir, bool delSub)
    24 {
    25 foreach (string fileName in Directory.GetFiles(dir))
    26 {
    27 File.SetAttributes(fileName, FileAttributes.Normal);
    28 File.Delete(fileName);
    29 }
    30 if (delSub)
    31 {
    32 DirectoryInfo dirInfo = new DirectoryInfo(dir);
    33 foreach (DirectoryInfo sub in dirInfo.GetDirectories())
    34 {
    35 DelAll(sub.FullName, true);
    36 }
    37 }
    38 }
    39
    40 public static void DelDir(string dir)
    41 {
    42 DirectoryInfo dirInfo = new DirectoryInfo(dir);
    43 if (dirInfo.Exists)
    44 {
    45 DelAll(dir, true);
    46 dirInfo.Delete(true);
    47 }
    48 }
    49
    50 public static void DelSubDir(string dir)
    51 {
    52 foreach (string subDir in Directory.GetDirectories(dir))
    53 {
    54 DelDir(subDir);
    55 }
    56 }
    57
    58 public static void MoveFiles(string src, string target, bool overWrite, bool moveSub)
    59 {
    60 foreach (string srcFileName in Directory.GetFiles(src))
    61 {
    62 string targetFileName = Path.Combine(target, srcFileName.Substring(srcFileName.LastIndexOf("\\" + 1)));
    63 if (File.Exists(targetFileName))
    64 {
    65 if (overWrite)
    66 {
    67 File.SetAttributes(targetFileName, FileAttributes.Normal);
    68 File.Delete(targetFileName);
    69 File.Move(srcFileName, targetFileName);
    70 }
    71 else
    72 {
    73 File.Move(srcFileName, targetFileName);
    74 }
    75 }
    76 if (moveSub)
    77 {
    78 foreach (string srcSubDir in Directory.GetDirectories(src))
    79 {
    80 string targetSubDir = Path.Combine(target, srcSubDir.Substring(srcSubDir.LastIndexOf("\\") + 1));
    81 if (!Directory.Exists(targetSubDir))
    82 {
    83 Directory.CreateDirectory(targetSubDir);
    84 MoveFiles(srcSubDir, targetSubDir, overWrite,moveSub);
    85 }
    86 }
    87 }
    88 }
    89 }
    90
    91 public static void Copy(string srcDir, string targetDir, bool overWrite, bool copySub)
    92 {
    93 foreach (string srcFileName in Directory.GetFiles(srcDir))
    94 {
    95 string targetFileName = Path.Combine(targetDir, srcDir.Substring(srcDir.LastIndexOf("\\") + 1));
    96 if (File.Exists(targetFileName))
    97 {
    98 if (overWrite)
    99 {
    100 File.SetAttributes(targetFileName, FileAttributes.Normal);
    101 File.Copy(srcFileName, targetFileName, overWrite);
    102 }
    103
    104 }
    105 else
    106 {
    107 File.Copy(srcFileName, targetFileName, overWrite);
    108 }
    109 }
    110 if (copySub)
    111 {
    112 foreach (string srcSubDir in Directory.GetDirectories(srcDir))
    113 {
    114 string targetSubDir = Path.Combine(targetDir, srcSubDir.Substring(srcSubDir.LastIndexOf("\\") + 1));
    115 if (!Directory.Exists(targetSubDir))
    116 {
    117 Directory.CreateDirectory(targetSubDir);
    118 Copy(srcSubDir, targetSubDir, overWrite, true);
    119 }
    120 }
    121 }
    122 }
    123
    124 public static string GetChildFileInfo(string dir)
    125 {
    126 StringBuilder sb = new StringBuilder();
    127 sb.Append("{");
    128 try
    129 {
    130 foreach (string fileName in Directory.GetFiles(dir))
    131 {
    132 FileInfo fileInfo = new FileInfo(fileName);
    133 string name = fileName.Substring(fileName.LastIndexOf("\\") + 1);
    134 string addr = fileName;
    135 string size = fileInfo.Length.ToString();
    136 string createTime = fileInfo.CreationTime.ToString();
    137 sb.Append("{name:" + name);
    138 sb.Append(",addr:" + addr);
    139 sb.Append(",size:" + size);
    140 sb.Append(",createTime:" + createTime);
    141 sb.Append("},");
    142 // generate a tree
    143 }
    144 foreach (string subDir in Directory.GetDirectories(dir))
    145 {
    146 GetChildFileInfo(subDir);
    147 }
    148 }
    149 catch(Exception ex)
    150 {
    151
    152 }
    153 if (sb.Length > 2)
    154 sb.Remove(sb.Length - 1, 1);
    155 sb.Append("}");
    156 return sb.ToString();
    157 }
    158 /// <summary>
    159 /// HW变形,W按宽度成比例,H按高度成比例,Cut不变形
    160 /// </summary>
    161 public enum ImageCutMode
    162 {
    163 HW,// HW变形
    164 W, // W按宽度成比例
    165 H, // H按高度成比例
    166 Cut // Cut不变形
    167 }
    168
    169 public static MemoryStream CutImage(Image oImage, int width, int height, ImageCutMode mode)
    170 {
    171 Image originalImage = oImage;
    172 MemoryStream ms = new MemoryStream();
    173
    174 int towidth = width;
    175 int toheight = height;
    176
    177 int x = 0;
    178 int y = 0;
    179 int ow = oImage.Width;
    180 int oh = oImage.Height;
    181
    182 switch (mode)
    183 {
    184 case ImageCutMode.HW://指定高宽缩放(可能变形)
    185 break;
    186 case ImageCutMode.W://指定宽,高按比例
    187 toheight = oh * width / ow;
    188 break;
    189 case ImageCutMode.H://指定高,宽按比例
    190 towidth = ow * height / oh;
    191 break;
    192 case ImageCutMode.Cut://指定高宽裁减(不变形)
    193 if ((double)ow / (double)oh > (double)towidth / (double)toheight)
    194 {
    195 ow = oh * towidth / toheight;
    196 y = 0;
    197 x = (oImage.Width - ow) / 2;
    198 }
    199 else
    200 {
    201 oh = ow * height / towidth;
    202 x = 0;
    203 y = (oImage.Height - oh) / 2;
    204 }
    205 break;
    206 default:
    207 break;
    208 }
    209
    210 //新建一个bmp图片
    211 Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
    212
    213 //新建一个画板
    214 Graphics g = System.Drawing.Graphics.FromImage(bitmap);
    215
    216 //设置高质量插值法
    217 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    218
    219 //设置高质量,低速度呈现平滑程度
    220 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    221
    222 //清空画布并以透明背景色填充
    223 g.Clear(Color.Transparent);
    224
    225 //在指定位置并且按指定大小绘制原图片的指定部分
    226 g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
    227 new Rectangle(x, y, ow, oh),
    228 GraphicsUnit.Pixel);
    229
    230 try
    231 {
    232 //以jpg格式保存缩略图
    233 bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    234 }
    235 catch (System.Exception e)
    236 {
    237 throw e;
    238 }
    239 finally
    240 {
    241 originalImage.Dispose();
    242 bitmap.Dispose();
    243 g.Dispose();
    244 }
    245 return ms;
    246 }
    247
    248 public static MemoryStream ZoomImage(byte[] buffer, int width, int height, ImageCutMode mode)
    249 {
    250 MemoryStream ms=new MemoryStream();
    251 ms.Write(buffer,0,buffer.Length);
    252 Image oImage = Image.FromStream(ms);
    253 MemoryStream outms = CutImage(oImage, width, height, ImageCutMode.HW);
    254 return outms;
    255 }
    256
    257 /**/
    258 /// <summary>
    259 /// 生成缩略图
    260 /// </summary>
    261 /// <param name="originalImagePath">源图路径(物理路径)</param>
    262 /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
    263 /// <param name="width">缩略图宽度</param>
    264 /// <param name="height">缩略图高度</param>
    265 /// <param name="mode">生成缩略图的方式</param>
    266 public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, ImageCutMode mode)
    267 {
    268 Image originalImage = Image.FromFile(originalImagePath);
    269
    270 int towidth = width;
    271 int toheight = height;
    272
    273 int x = 0;
    274 int y = 0;
    275 int ow = originalImage.Width;
    276 int oh = originalImage.Height;
    277
    278 switch (mode)
    279 {
    280 case ImageCutMode.HW://指定高宽缩放(可能变形)
    281 break;
    282 case ImageCutMode.W://指定宽,高按比例
    283 toheight = originalImage.Height * width / originalImage.Width;
    284 break;
    285 case ImageCutMode.H://指定高,宽按比例
    286 towidth = originalImage.Width * height / originalImage.Height;
    287 break;
    288 case ImageCutMode.Cut://指定高宽裁减(不变形)
    289 if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
    290 {
    291 oh = originalImage.Height;
    292 ow = originalImage.Height * towidth / toheight;
    293 y = 0;
    294 x = (originalImage.Width - ow) / 2;
    295 }
    296 else
    297 {
    298 ow = originalImage.Width;
    299 oh = originalImage.Width * height / towidth;
    300 x = 0;
    301 y = (originalImage.Height - oh) / 2;
    302 }
    303 break;
    304 default:
    305 break;
    306 }
    307
    308 //新建一个bmp图片
    309 Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
    310
    311 //新建一个画板
    312 Graphics g = System.Drawing.Graphics.FromImage(bitmap);
    313
    314 //设置高质量插值法
    315 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    316
    317 //设置高质量,低速度呈现平滑程度
    318 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    319
    320 //清空画布并以透明背景色填充
    321 g.Clear(Color.Transparent);
    322
    323 //在指定位置并且按指定大小绘制原图片的指定部分
    324 g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
    325 new Rectangle(x, y, ow, oh),
    326 GraphicsUnit.Pixel);
    327
    328 try
    329 {
    330 //以jpg格式保存缩略图
    331 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
    332 }
    333 catch (System.Exception e)
    334 {
    335 throw e;
    336 }
    337 finally
    338 {
    339 originalImage.Dispose();
    340 bitmap.Dispose();
    341 g.Dispose();
    342 }
    343 }
    344
    345 public static MemoryStream WaterPrint(MemoryStream ms, string word, PointF pos)
    346 {
    347 MemoryStream outms = new MemoryStream();
    348 Image img = Image.FromStream(ms);
    349 Graphics g = Graphics.FromImage(img);
    350 g.DrawImage(img, 0, 0, img.Width, img.Height);
    351 Font f = new Font("Verdana", 16);
    352 Brush b = new System.Drawing.SolidBrush(Color.Blue);
    353 g.DrawString(word, f, b,pos);
    354 img.Save(outms, System.Drawing.Imaging.ImageFormat.Jpeg);
    355 img.Dispose();
    356 return outms;
    357 }
    358 }
    359
  • 相关阅读:
    基础总结深入:数据类型的分类和判断(数据、内存、变量) 对象 函数 回调函数 IIFE 函数中的this 分号
    BOM 定时器 通过修改元素的类来改变css JSON
    事件 事件的冒泡 事件的委派 事件的绑定 事件的传播
    DOM修改 使用DOM操作CSS
    包装类 Date Math 字符串的相关的方法 正则表达式 DOM DOM查询
    数组 call()、apply()、bind()的使用 this arguments
    autocad 二次开发 最小包围圆算法
    win10 objectarx向导在 vs2015中不起作用的解决办法
    AutoCad 二次开发 jig操作之标注跟随线移动
    AutoCad 二次开发 文字镜像
  • 原文地址:https://www.cnblogs.com/pingjiang/p/1869187.html
Copyright © 2011-2022 走看看