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
  • 相关阅读:
    module 和 component 的区别
    API、SDK、DLL有什么用?
    app基本控件
    PaaS是什么?
    js回调函数(callback)(转载)
    多语言 SEO
    axure rp 8.0
    整天看用户埋点数据,知道数据是咋来的吗?
    发现恶意ip大量访问 可使用命令进行封禁
    阿里云服务器迁移更改IP,导致网站挂掉
  • 原文地址:https://www.cnblogs.com/pingjiang/p/1869187.html
Copyright © 2011-2022 走看看