导出xml 刚开始想到的是 用XmlDocument 动态建立xml文件, 并对数据库里的数据遍历 动态生成table 这种方法太麻烦了。。。。 菜鸟的弯路还真多啊。
然后 找到了 dataset 直接就有方法导出 带字段的和 数据的方法
DataSet dt = new DataSet();
dt.WriteXml(xxfliepath, XmlWriteMode.WriteSchema);
其中xxfliepath 是已经定义好的文件的绝对路径加上文件的名字
这里我又遇到的路径的问题 通过相对路径获取绝对路径, 如果相对路径和绝对路径的感念不清楚 可以百度查一查 string xmlpath = this.Server.MapPath(@"FilesUpload)
然后做文件的压缩 刚开始找到了一个压缩类,但是不知道为什么传参数的时候 怎么传都找不到文件 可以分享一下这个类
#region .rar文件帮助类
public class FileRar
{
static public bool Exists()
{
RegistryKey the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
return !string.IsNullOrEmpty(the_Reg.GetValue("").ToString());
}
/ <summary>
/ 压缩文件
/ </summary>
/ <param name="DFilePath">需要压缩的文件夹或者单个文件</param>
/ <param name="DRARName">生成压缩文件的文件名</param>
/ <param name="DRARPath">生成压缩文件保存路径</param>
/ <returns></returns>
//public static bool RAR(string DFilePath, string DRARName, string DRARPath)
//{
// String the_rar;
// RegistryKey the_Reg;
// Object the_Obj;
// String the_Info;
// ProcessStartInfo the_StartInfo;
// Process the_Process;
// // DRARPath += DRARName;
// //DRARName = DRARPath + DRARName;
// try
// {
// the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
// the_Obj = the_Reg.GetValue("");
// the_rar = the_Obj.ToString();
// the_Reg.Close();
// the_rar = the_rar.Substring(1, the_rar.Length - 7);
// the_Info = " a " + " " + DRARName + " " + DFilePath; //命令 + 压缩后文件名 + 被压缩的文件或者路径
// the_StartInfo = new ProcessStartInfo();
// the_StartInfo.FileName = the_rar;
// the_StartInfo.Arguments = the_Info;
// the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// the_StartInfo.WorkingDirectory = DRARPath; //RaR文件的存放目录。
// the_Process = new Process();
// the_Process.StartInfo = the_StartInfo;
// the_Process.Start();
// return true;
// }
// catch (Exception ex)
// {
// return false;
// }
//}
/// <summary>
/// 解压
/// </summary>
/// <param name="unRarPatch">解压文件路径</param>
/// <param name="rarPatch">压缩文件路径</param>
/// <param name="rarName">压缩文件名称</param>
/// <returns></returns>
public static bool unCompressRAR(string unRarPatch, string rarPatch, string rarName, out string err)
{
string the_rar;
RegistryKey the_Reg;
object the_Obj;
string the_Info;
bool flag = false;
err = "";
try
{
the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe");
the_Obj = the_Reg.GetValue("");
the_rar = the_Obj.ToString();
the_Reg.Close();
//the_rar = the_rar.Substring(1, the_rar.Length - 7);
if (Directory.Exists(unRarPatch) == false)
{
Directory.CreateDirectory(unRarPatch);
}
the_Info = "x " + rarName + " " + unRarPatch + " -y";
ProcessStartInfo the_StartInfo = new ProcessStartInfo();
the_StartInfo.FileName = the_rar;
the_StartInfo.Arguments = the_Info;
the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
the_StartInfo.WorkingDirectory = rarPatch;//获取压缩包路径
Process the_Process = new Process();
the_Process.StartInfo = the_StartInfo;
the_Process.Start();
the_Process.WaitForExit();
the_Process.Close();
flag = true;
}
catch (Exception ex)
{
throw ex;
err = ex.Message.ToString();
// Logger.writeLogger("解压文件出现异常" + ex.Message.ToString());
}
return flag;
}
}
然后想到的是调用bat 命令 但是在动态 写bat命令的时候总是出错
最后在网上直接找到SharpZipLib
然后写了个压缩方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ICSharpCode.SharpZipLib.Zip;
using System.IO;
using ICSharpCode.SharpZipLib.Checksums;
/// <summary>
///zipheper 的摘要说明
/// </summary>
public class zipheper
{
public zipheper()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public static void ZipFile(string filefolder, string zipfilename)
{
if (Directory.Exists(filefolder))
{
FastZip fastZip = new FastZip();
//zip filename is full file name
fastZip.CreateZip(zipfilename, filefolder, true, "");
}
//if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar)
// strFile += Path.DirectorySeparatorChar;
//ZipOutputStream s = new ZipOutputStream(File.Create(strZip));
//s.SetLevel(9); // 0 - store only to 9 - means best compression
//zip(strFile, s, "D:\\TDDOWNLOAD\\photos.aa");
//s.Finish();
//s.Close();
}
private static void zip(string strFile, ZipOutputStream s, string staticFile)
{
if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar)
strFile += Path.DirectorySeparatorChar;
Crc32 crc = new Crc32();
string[] filenames = Directory.GetFileSystemEntries(strFile);
foreach (string file in filenames)
{
if (Directory.Exists(file))
{
zip(file, s, staticFile);
}
else // 否则直接压缩文件
{
//打开压缩文件
FileStream fs = File.OpenRead(file);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
string tempfile = file.Substring(staticFile.LastIndexOf("\\") + 1);
ZipEntry entry = new ZipEntry(tempfile);
entry.DateTime = DateTime.Now;
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
}
}
}
}