我想使用System.Io.File命名空间创建一个文件,无论我在MVC上使用它是什么新手,当我发布我的proyect时我得到这个错误"使用命名空间指令只能应用于命名空间; '有System.IO.File'是一个类型而不是命名空间"
这是我使用的声明:
using System;
using System.Reflection;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.IO.File;
using System.Text;
using (var reader = System.IO.File.CreateText(@"C:\inetpub\wwwroot\procedimiento.txt"))
{
// Starting outer json array
reader.WriteLine("[");
for (var rowIndex = 0; rowIndex < myTable.Rows.Count; rowIndex++)
{
var row = myTable.Rows[rowIndex];
var rowValues = new List<string>(); // can be reused if needed
foreach (DataColumn column in myTable.Columns)
rowValues.Add(row[column].ToString());
var jsonRow = JsonConvert.SerializeObject(rowValues);
// Write current row
reader.Write(jsonRow);
// Add separating comma
if (rowIndex != myTable.Rows.Count - 1)
reader.WriteLine(",");
}
// End outer json array
reader.WriteLine("]");
}
答案 0 :(得分:3)
using
关键字具有不同的语义,具体取决于它所在的位置。
直接放入文件时,它可以告诉要导入哪些名称空间。在该上下文中,您不能直接使用类的using语句。好。你可以,但语法不同。 MSDN
另一种用法是在对象超出范围时处置它。在这种情况下,您可以输入完全限定的类名(命名空间+类名)或仅输入类名。 MSDN
在你的代码中你混合了两个。
备选方案1
完全删除文件中的using语句,只需在语句中指定完整的类名。
using System.Web;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Text;
//in your method
using (var reader = System.IO.File.CreateText(@"C:\inetpub\wwwroot\procedimiento.txt"))
备选方案2
从语句和类名中删除命名空间:
using System.Web;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Text;
//in your method
using (var reader = File.CreateText(@"C:\inetpub\wwwroot\procedimiento.txt"))
备选方案3
使用指令重命名该类。当编译器无法区分不同的标识符(比如在不同的导入名称空间中具有相同的类名)时,通常使用此方法。
using System.Web;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.IO;
using IoFile = System.IO.File; //this
using System.Text;
//in your method
using (var reader = IoFile.CreateText(@"C:\inetpub\wwwroot\procedimiento.txt"))
答案 1 :(得分:1)
您的代码缺少类和方法声明。 System.IO.File实际上是一种类型,你不应该在using语句中引用它。您需要引用的只是System.IO,然后您可以调用File.CreateText()。
using System;
using System.IO;
public class MyClass
{
public void CreateFile()
{
string path = @"c:\temp\MyTest.txt";
if (!File.Exists(path))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
}
}
答案 2 :(得分:0)
试试这个。
using (StreamWriter sw = File.CreateText(fileName))
{
sw.WriteLine("New file created: {0}", DateTime.Now.ToString());
}