我已经编写了一个代码来创建&写一个文件。但是它没有创建一个文件。没有任何编译错误。我的文件夹层次结构是DesktopModules - > SMSFunction-> SMSText。我需要在SMSText文件夹中创建一个文本文件,
public void WriteToFile( string source, int dest, string messageIn, string operatorNew)
{
try{
string directory = ResolveUrl("~/DesktopModules/SMSFunction/SMSText");
//string directory = Server.MapPath("~/DesktopModules/SMSFunction/SMSText");
string filename = String.Format("{0:yyyy-MM-dd}__{1}.txt", DateTime.Now);
string path = Path.Combine(directory, filename);
if (!File.Exists(filename))
{
using (StreamWriter str = File.CreateText(path))
{
str.WriteLine("msisdn: " + source);
str.WriteLine("shortcode : " + dest);
str.WriteLine("Message : " + messageIn);
str.WriteLine("Operator :" + operatorNew);
str.Flush();
}
}
else if (File.Exists(filename))
{
using (var str = new StreamWriter(filename))
{
str.WriteLine("msisdn: " + source);
str.WriteLine("shortcode : " + dest);
str.WriteLine("Message : " + messageIn);
str.WriteLine("Operator :" + operatorNew);
str.Flush();
}
}
}
catch(Exception ex)
{
Response.Write(ex.Message);
}
}
答案 0 :(得分:5)
这里有问题:
string filename = String.Format("{0:yyyy-MM-dd}__{1}.txt", DateTime.Now); .
您调用string.Format传递需要两个参数{0:yyyy-MM-dd}
和{1}
的格式字符串,但您只提供一个DateTime.Now
。当你的代码到达那一行时会引发一个FormatException并跳转到catch块退出而不向磁盘写任何东西。
编辑: 如果您不想覆盖文件的内容,那么您应该使用允许附加到现有文件的StreamWriter的重载构造函数
.....
else if (File.Exists(filename))
{
using (var str = new StreamWriter(filename, true))
{
....
但我认为你不需要检查File.Exists。如果仔细查看StreamWriter文档,您将看到文件在不存在时创建。所以上面的代码可以真正简化为
using (var str = new StreamWriter(path, true))
{
str.WriteLine("msisdn: " + source);
str.WriteLine("shortcode : " + dest);
str.WriteLine("Message : " + messageIn);
str.WriteLine("Operator :" + operatorNew);
str.Flush();
}
删除不必要的if块
答案 1 :(得分:2)
private void SetPartnerTemplate()
{
var sb = new StringBuilder();
widget.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
string setting = sb.ToString();
string fileLoc = @"D:\sample1.txt";
FileStream fs = null;
if (!File.Exists(fileLoc))
{
using (fs = File.Create(fileLoc))
{
}
}
if (File.Exists(fileLoc))
{
using (StreamWriter sw = new StreamWriter(fileLoc))
{
sw.Write(setting);
}
}
if (File.Exists(fileLoc))
{
setting = File.ReadAllText(fileLoc);
}
else
{
Response.Write("<script language='javascript'>window.alert('File not found');</script>");
}
//after writing storing dat file to db
//VoCServiceObj.SpSetWidgetRatingPartnerTemplate(setting, partnerid, productid);
}
答案 2 :(得分:1)
protected void btnUpload_Click(object sender, EventArgs e)
{
var sb = new StringBuilder();
widget.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
string setting = sb.ToString();
string fileLoc = @"D:\Newsample.txt";
FileStream fs = null;
if (!File.Exists(fileLoc))
{
using (fs = File.Create(fileLoc))
{
}
}
if (File.Exists(fileLoc))
{
using (StreamWriter sw = new StreamWriter(fileLoc))
{
sw.Write(setting);
}
}
if (File.Exists(fileLoc))
{
setting = File.ReadAllText(fileLoc);
}
else
{
Response.Write("<script language='javascript'>window.alert('File not found');</script>");
}
FileStream st = new FileStream(fileLoc, FileMode.Open);
byte[] buffer = new byte[st.Length];
st.Read(buffer, 0, (int)st.Length);
SqlConnection conn = new SqlConnection("Data Source=dsname;Initial Catalog=test;User ID=test;pwd=password");
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = conn;
//OpenConnection(conn);
conn.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO Files(Data) VALUES(@Data)", conn);
//string commandText = "INSERT INTO Files VALUES(@Name, @ContentType, ";commandText = commandText + "@Size, @Data)";
//cmd.CommandText = commandText;
//cmd.CommandType = CommandType.Text;
//cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 100);
//cmd.Parameters.Add("@ContentType", SqlDbType.VarChar, 50);
//cmd.Parameters.Add("@size", SqlDbType.Int);
cmd.Parameters.Add("@Data", SqlDbType.VarBinary);
//cmd.Parameters["@Name"].Value = "name";
//cmd.Parameters["@ContentType"].Value = "contentType";
//cmd.Parameters["@size"].Value = 5;
cmd.Parameters["@Data"].Value = buffer;
cmd.ExecuteNonQuery();
SqlCommand command = new SqlCommand("select Data from Files", conn);
byte[] buffer3 = (byte[])command.ExecuteScalar();
FileStream fs2 = new FileStream(@"D:\op.txt", FileMode.Create);
fs2.Write(buffer, 0, buffer.Length);
fs2.Close();
st.Close();
conn.Close();
}