C#文件操作
1、判断指定路径下文件是否存在:
/// <summary> /// 判断服务器上指定文件夹下指定文件是否存在。 /// </summary> /// <returns>是否存在</returns> [WebMethod(Description = "判断指定路径下的指定文件是否存在。")] public bool IsScheduleFileExists(string serverFilePath,string serverFileName) { if (String.IsNullOrEmpty(serverFilePath)) { serverFilePath = Server.MapPath("~/Temp"); } if (!serverFilePath.EndsWith(@"\")) { serverFilePath += @"\"; } if (!Directory.Exists(serverFilePath)) { return false; } String destinationFileFullName = String.Format(@"{0}{1}", serverFilePath, serverFileName); if (System.IO.File.Exists(destinationFileFullName)) { return true; } return false; }
2、合并指定路径下的文件集:
/// <summary> /// 合并文件。 /// </summary> /// <param name="packedCount">总包数。</param> /// <param name="serverFileSavePath">文件保存路径。</param> /// <param name="destinationFileFullName">文件全名。</param> private void MergeFiles(Int32 packedCount, String serverFileSavePath, String destinationFileFullName) { FileStream fs = new FileStream(destinationFileFullName, FileMode.Append, FileAccess.Write); FileStream fsTemp = null; String tempFileName = String.Empty; Int32 readBytes; Byte[] bytes = new Byte[this.bufferSize]; for (Int32 idx = 1; idx < packedCount; idx++) //从第二个线程接收的临时文件开始合并 { tempFileName = String.Format(@"{0}{1}{2}.tmp", serverFileSavePath, idx); fsTemp = new FileStream(tempFileName, FileMode.Open, FileAccess.Read); readBytes = fsTemp.Read(bytes, 0, this.bufferSize); while (readBytes > 0) { fs.Write(bytes, 0, readBytes); readBytes = fsTemp.Read(bytes, 0, this.bufferSize); } fsTemp.Close(); fsTemp.Dispose(); File.Delete(tempFileName); } fs.Flush(); fs.Close(); fs.Dispose(); }
3、文件拷贝:
FileInfo sourceFileInfo = new FileInfo(sourceFullFileName); FileInfo destFullFileInfo = new FileInfo(destFullFileName); if (sourceFileInfo.Length != destFullFileInfo.Length) { return "文件大小不一致"; } File.Delete(sourceFullFileName);
4、判断两文件大小:
//先把目录创建出来, 否者Copy会失败 string strPath = System.IO.Path.GetDirectoryName(destFullFileName); System.IO.Directory.CreateDirectory(strPath); File.Copy(sourceFullFileName, destFullFileName, true);