我正面临这个问题
class person
{
;
}
person p = new person();
XmlSerializer ser = new XmlSerializer(p.GetType());
FileStream fs = File.Open("sam.xml",FileMode.OpenOrCreate, FileAccess.Write);
ser.Serialize(fs,p)
fs.flush();
fs.close();
FileStream stream = FileStream("sam.xml", FileMode.Open);
XmlDictionaryReader xdr = XmlDictionaryReader.CreateTextReader(stream,new XmlDictionaryReaderQuotas());
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如何在不创建xml文件的情况下创建xdr对象.
我正在使用流文件,但发生了"内存不足"错误.我想我必须逐字节地读取流.然后我用这个方法加载一个文件:
fs := TFileStream.Create("c:\a\a.avi", fmOpenRead or fmShareDenyWrite) ;
Run Code Online (Sandbox Code Playgroud)
接下来我重置流位置:
fs.positon:=0;
Run Code Online (Sandbox Code Playgroud)
然后我试图读取流的第一个字节:
var
oneByte:byte;
begin
fs.Read(oneByte,2);
Run Code Online (Sandbox Code Playgroud)
但它无法正常工作.我的错误在哪里?
我谷歌了一下,看到了读取和写入文件的不同方法,但我需要最快的方法将文件转换为流。
我正在努力提高一种简单地将文件转换为流的方法的性能。这每天都会被调用无数次,我们正在考虑改进它的性能。请看下面我写的方法。
public static Stream GetFileStream(string fileName)
{
Stream result;
try
{
if (File.Exists(fileName))
{
result = File.OpenRead(fileName);
if (result.Length > 0)
{
result.Seek(0, SeekOrigin.Begin);
}
}
else
{
throw new Exception(string.Format("{0} file not found.", fileName));
}
}
catch (Exception ex)
{
throw ex;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
示例测试调用代码(我无法控制,如下所示)
List<string> fileNames = new List<string>();
//add almost 30,000 file names to string
List<Stream> fileStreams = new List<Stream>();
foreach(string fileName in fileNames)
{
Stream fileStream = FileUtility.GetFileStream(fileName);
fileStreams.Add(fileStream);
}
Run Code Online (Sandbox Code Playgroud)
我正在研究如何提高我的方法 ConvertToStream 的性能。 …
main(string[] args) {
string file = @"D:\123.txt";
using (FileStream f = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
{
f.Position = 0;
StartReadBookThread(f);
}
}
//this is a public API for user
public static Thread StartReadBookThread(Stream stream)
{
Console.WriteLine("CanSeek:" + stream.CanSeek);
var t = new Thread(() => DoReadBook(stream));
t.Start();
return t;
}
private static void DoReadBook(Stream stream)
{
Console.WriteLine("CanSeek:" + stream.CanSeek);
}
Run Code Online (Sandbox Code Playgroud)
在DoReadBook
方法中,流变为关闭,CanSeek
变为假。
如果我想在线程中读取流,如何处理它,一般的方法是我们为用户提供一个公共 API StartReadBookThread 并在线程中运行。用户我们总是喜欢以建议 using(){} ... 方式调用参数文件流。那么我们如何才能更好地读取文件。你知道我们只是在一个线程中完成它,有时它可能会被关闭。
我成功保存文件但是在点击第二次保存然后转到第二行之后我需要第一次保存.
但它显示所有相同的行.
你能帮我看看我的第二线吗?
private void button1_Click(object sender, EventArgs e)
{
string fileName = "E:\\sumon.txt";
string textToAdd = textBox1.Text;
using (StreamWriter writer = new StreamWriter(fileName, false))
{
writer.Write(textToAdd);
}
}
Run Code Online (Sandbox Code Playgroud)