110,561
社区成员
发帖
与我相关
我的任务
分享
string dbname = "数据库名";
string filename1 = Application.StartupPath + "\\OceanSampleDBTemp\\OceanSampleDB.mdf";
string filename2 = Application.StartupPath + "\\OceanSampleDBTemp\\OceanSampleDB_log.ldf";
string OldDBPath = "";
string backupFilePath = "";
string backupFilePathLDF = "";
try
{
string dirDBPath = Application.StartupPath + "\\DBBackup_" + DateTime.Now.ToShortDateString()+"_"+DateTime.Now.ToShortTimeString().Replace(":","-")+"-"+DateTime.Now.Second.ToString();
DirectoryInfo diTemp = new DirectoryInfo(dirDBPath);
if (!(diTemp.Exists))
diTemp.Create();
backupFilePath = diTemp.ToString() + filename1.Substring(filename1.LastIndexOf("\\"));
//创建两个文件流 一个是源文件相关,另一个是要写入的文件
FileStream fs = new FileStream(filename1, FileMode.Open);
FileStream fs2 = new FileStream(backupFilePath, FileMode.Create);
byte[] data = new byte[1024];
//创建两个缓冲流,与两个文件流相关联
BufferedStream bs = new BufferedStream(fs);
BufferedStream bs2 = new BufferedStream(fs2);
//fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
//好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
//即-->那个人没有苹果往篮子里面放了
while (fs.Read(data, 0, data.Length) > 0)
{
fs2.Write(data, 0, data.Length);
fs2.Flush();
}
//关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
fs.Close();
fs2.Close();
//复制数据库日志文件)
//string OldDBPathLDF = OldDBPath.Substring(0, OldDBPath.LastIndexOf(".")) + "_log.ldf";
backupFilePathLDF = diTemp.ToString() + filename2.Substring(filename2.LastIndexOf("\\"));
//创建两个文件流 一个是源文件相关,另一个是要写入的文件
FileStream fsLdf = new FileStream(filename2, FileMode.Open);
FileStream fs2Ldf = new FileStream(backupFilePathLDF, FileMode.Create);
byte[] dataLdf = new byte[1024];
//创建两个缓冲流,与两个文件流相关联
BufferedStream bsLdf = new BufferedStream(fsLdf);
BufferedStream bs2Ldf = new BufferedStream(fs2Ldf);
//fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
//好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
//即-->那个人没有苹果往篮子里面放了
while (fsLdf.Read(dataLdf, 0, dataLdf.Length) > 0)
{
fs2Ldf.Write(dataLdf, 0, dataLdf.Length);
fs2Ldf.Flush();
}
//关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
fsLdf.Close();
fs2Ldf.Close();