我有以下问题或疑问, 我有这个功能
private void SavePic(Canvas canvas, string filename)
{
RenderTargetBitmap renderBitmap = new RenderTargetBitmap(
(int)canvas.Width, (int)canvas.Height,
96d, 96d, PixelFormats.Pbgra32);
// needed otherwise the image output is black
canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));
renderBitmap.Render(canvas);
//JpegBitmapEncoder encoder = new JpegBitmapEncoder();
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
using (FileStream file = File.Create(filename))
{
encoder.Save(file);
}
}
和相应的电话
SavePic(mySuperDefaultPainting, @"C:\KinDraw\out.png");
现在我想将文件名附加日期+时间? 你可以在函数调用中获取这个DateTime函数吗?
也许我可以帮到这里?
答案 0 :(得分:3)
尝试(针对文件路径更新):
string fileName=string.Format("{0}-{1:ddMMMyyyy-HHmm}.png", @"C:\KinDraw\out",
DateTime.Now);
if(!Directory.Exists(Path.GetDirectoryName(fileName)))
{
Directory.CreateDirectory(Path.GetDirectoryName(fileName));
}
SavePic(mySuperDefaultPainting, fileName);
说时间 29-JAN-2013 07:30 PM 它会给你:C:\KinDraw\out-29JAN2013-1930.png
。
但请查看this MSDN page上有关CreateDirectory
的详细信息。还要查找Exceptions
并包装try-catch
块。
答案 1 :(得分:1)
尝试在代码的开头添加:
var extension = Path.GetExtension(filename);
var newName = filename.Replace(filename, extension) + DateTime.Now.ToString("yyyy-MM-dd HH:mm:dd") + extension;
答案 2 :(得分:1)
string timestamp =DateTime.Now.ToString("MMddyyyy.HHmmss");
SavePic(mySuperDefaultPainting, @"C:\KinDraw\out"+timestamp+".png");
更新:(如果目录不存在,则创建目录)
if (!Directory.Exists(filepath))
Directory.CreateDirectory(filepath);
希望有所帮助:)
答案 3 :(得分:1)
只需将此行放在那里:
string stampedFileName = filename.Replace(".",
string.Format("{0:YYYY-mm-dd hhmmss}", DateTime.UtcNow) + ".");
然后更改
using (FileStream file = File.Create(filename))
到
using (FileStream file = File.Create(stampedFilename))
使用DateTime.UtcNow
而非DateTime.Now
非常重要,因为前者不受夏令时的影响。
编辑:我上面提出的格式有一个优点,即按字母顺序对文件名进行排序,然后自动按时间顺序排序。
答案 4 :(得分:0)
用法:
string result = "myfile.txt".AppendTimeStamp();
//myfile20130604234625642.txt
扩展方法
public static class MyExtensions
{
public static string AppendTimeStamp(this string fileName)
{
return string.Concat(
Path.GetFileNameWithoutExtension(fileName),
DateTime.Now.ToString("yyyyMMddHHmmssfff"),
Path.GetExtension(fileName)
);
}
}
答案 5 :(得分:-1)
我就是这样做的,而且效果很好。稍微调整了@Avishek 代码以使其适用于我的代码。无需删除文件或丢失其中的内容。
输出文件后调用“Rename()”方法..
public static void Rename()
{
string timestamp = DateTime.Now.ToString("MMddyyyy.HHmmss");
string originalFile = @"C:\Users\Data_Output\" + fileName + ".csv";
string newFile = @"C:\Users\Data_Output\" + fileName + "_" + timestamp + ".csv";
File.Move(originalFile, newFile);
}