同时对文本文件进行读写
小弟现在在做一个项目,项目组买了个传感器,它自带的软件能把数据直接存到txt里面。现在想在传感器存数据的同时,写个程序把txt里面的数据读出来。遇到了问题说,文件在另一个线程中被使用。想请问大家有没有什么办法?谢谢了! --------------------编程问答-------------------- 用两个文件
或者读到内存中以后,关闭streamreader
再streamwriter --------------------编程问答--------------------
这么用可不是办法,以文件做为数据交换中介,看看传感器的sdk吧,应该不用从文件读的; --------------------编程问答-------------------- 我现在无法访问它建立的那个文件 --------------------编程问答-------------------- 传感器没有SDK之类的东西啊。很晕。 --------------------编程问答-------------------- 能不能获取它的进程让其睡眠一会呢? --------------------编程问答-------------------- 能不能写个程序先复制这个txt然后,读取这个复制的txt --------------------编程问答-------------------- 看看打开文件的方式,不要用独占打开,你试下 --------------------编程问答-------------------- 用共享方式打开! --------------------编程问答-------------------- 对同一个文件,不能同时读写,这是一种保护。就是锁定。
如果你想读取那个txt文件,就必须在其写操作完成后再去读。
或者看看那个写的软件是否可以进行某些设定之类的。
--------------------编程问答-------------------- 同一楼,可能是你没有关闭 --------------------编程问答-------------------- 不知道传感器在写文件的时候有没有开读权限出来
只要有读权限,你就可以用下面的代码把文件装载到内存后慢慢处理,也不会影响到传感器的写操作
[C# Code]
Stream original = File.Open(Path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
byte[] filebyte = new byte[original.Length];
original.Seek(0, SeekOrigin.Begin);
original.Read(filebyte, 0, filebyte.Length);
original.Close();
original.Dispose();
using (MemoryStream dbf = new MemoryStream(filebyte))
{
}
[/C# Code] --------------------编程问答-------------------- 两个线程肯定不能同时使用独占资源的,找一个中间载体吧 --------------------编程问答--------------------
11楼的想法不错 --------------------编程问答-------------------- 建议用数据库, --------------------编程问答-------------------- 高速去读写txt文件是不现实的 --------------------编程问答-------------------- 好像很矛盾啊,他都没写完,你读的是啥啊? 他一边写,你一边读? 你能保证你读到的是完整的数据吗?
他里面一直在变化的啊
还有就是最关键的:
兄弟我没分了,咋还得有分才能发帖子呢? 能给我点不?
兄弟我没分了,咋还得有分才能发帖子呢? 能给我点不?
兄弟我没分了,咋还得有分才能发帖子呢? 能给我点不?
兄弟我没分了,咋还得有分才能发帖子呢? 能给我点不?
兄弟我没分了,咋还得有分才能发帖子呢? 能给我点不?
兄弟我没分了,咋还得有分才能发帖子呢? 能给我点不?
兄弟我没分了,咋还得有分才能发帖子呢? 能给我点不? --------------------编程问答-------------------- 遇到类似问题,求解啊 --------------------编程问答-------------------- 用数据库就完全可以了
数据库是可以支持你的这个要求的
简单问题不要用复杂方式实现
你是客户
让他们提供数据库的形式
要是放放数据库一个查询就实现了 --------------------编程问答--------------------
其实按说,文件写的时候应该是可读的。FileShare你试试,不过这个比较耗内存的,想对于普通的Stream。
例子:(没编译,复制到自己那试试)
--------------------编程问答--------------------
FileStream fsw = new FileStream("C:\\shareFile.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
Thread writeWorker = new Thread((ThreadStart)delegate
{
while (true)
{
fsw.Seek(0,SeekOrigin.Begin);
byte[] writeBuffer = Encoding.UTF8.GetBytes(DateTime.UtcNow.ToString("hh:mm:ss")+Environment.NewLine);
fsw.Write(writeBuffer, 0, writeBuffer.Length);
fsw.Flush();
Thread.Sleep(1000);
}
});
Thread readWorker = new Thread((ThreadStart)delegate
{
while(true)
{
FileStream fs = new FileStream("c:\\shareFile.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
byte[] readBuffer = new byte[fs.Length];
fs.Read(readBuffer,0,readBuffer.Length);
Console.WriteLine(Encoding.UTF8.GetString(readBuffer));
Thread.Sleep(1000);
}
});
writeWorker.Start();
readWorker.Start();
Console.ReadLine();
加上writeWorker 跟 readWorker的Close();我手残了,忘了写。 --------------------编程问答-------------------- to:yf315918
不要想尽办法去解决读txt文件的问题。
传感器数据就那么几种数据传输的方法
串口,GPRS(通过Socket)
你去了解一下,他们是使用哪种方式传输的,然后自己去实现你需要的功能。
然后这些数据都有自定义的格式,放到数据库中需要自己解下 --------------------编程问答-------------------- 数据读的时候读到内存,写的时候写到文件,只要还是在于业务逻辑上的设计,什么时候读,什么时候写
补充:.NET技术 , C#