C# 多线程读取文件 在线等待

问题描述

文件夹目录F:files下有N多个子目录,每个子目录下有多个文件,文件数量达上几百万个。请问用什么方法能快速把这些文件内容读出来并插入数据库?希望朋友能给出代码

解决方案

本帖最后由 nick10086 于 2011-06-12 01:45:47 编辑
解决方案二:
不建议多线程,因为磁盘上的文件并发读取越多,磁盘寻道越频繁,导致性能反而下降。我们都有这样的经验,复制2个1GB的文件,一个一个拷贝和两个一起拷贝,后者的时间远远大于前者。建议使用一个BackgroundWorker来访问文件,并且在界面用进度条让用户耐心等待。
解决方案三:
可以开多线程读取,不过应该根据当前的机器性能适量开启,3-5个另外多线程读取一定做好目录结构的判断,千万别乱了.
解决方案四:
启用多线程的目的要搞清楚,就是你整个系统的瓶颈在于你程序的执行能力上,这时你开多个线程可以提升程序的执行能力,多线程才有效。如果瓶颈在其他地方,多线程的效果并不明显,反而会增加你代码中维护多线程操作同一个目标的开销,比如lz你的这个应用,我感觉可能瓶颈会出现在磁盘读写和文件的查询上,开多线程的效果不一定很明显。这里面分了三个部分,如果非要开多线程的话,需要考虑这三者之间的协同工作:1.获取所有文件的全路径文件名。2.读取文件。3.写入数据库。
解决方案五:
使用并行计算,参考http://hi.baidu.com/%CE%DE%B7%E7%CC%FD%BA%A3/blog/item/31e5dd8ad9f873defc1f1070.html
解决方案六:
看你的cpu数量和机器性能了,一个cpu,线程只是解决假死问题,达不到提高速度的效果再有就是读取文件内容,用内存映射,特别是对于大文件,最好的选择
解决方案七:
路过,学习顶
解决方案八:
完成端口能帮到你
解决方案九:
除了界面主线程外。开一个读文件的线程。一个写数据库的线程就足够了。读文件的线程把数据读完后把数据直接交给写数据库的线程去做数据处理。然后自己再去读一下文件。考略到读和写速度的问题。你可以读和写开相应的线程。
解决方案十:
bdmh谢谢内存映射读写文件有看头,查了一下资料感觉很不错,还有没有其它更好的方法呢?

时间: 2024-09-04 16:14:59

C# 多线程读取文件 在线等待的相关文章

c#读取文件问题

问题描述 有一个文件比如有n行,我开了两个线程,想用第一个线程读取文件前n/2行的数据,然后第二个线程读取后n/2行的数据,咋弄?求解求解求解 解决方案 解决方案二:--!...为什么最近老是喜欢有人搞多线程操作文件或者数据库什么的....认为速度会提升?...解决方案三:你多线程读取文件和单线程读取同一个文件都是同步读取的一个效果而且多线程还需要时间片的切换解决方案四:用信号变量控制一下就行了,控制线程同步的方式有很多种,比如AutoResetEvent,Mutex,Monitor等等,可以搜

java多线程读取集合对象后写入同一文件

问题描述 java多线程读取集合对象后写入同一文件 有一个学生对象,包含学号.姓名.班级属性 生成10个学生对象后放入集合中 运用多线程读取集合中学生对象后将学生信息写入到同一文件(按学生学号排序) 本人多线程实在不会,求大神解答.(不实现排序的也行)主要是能有多线程方面的代码提供下参考 解决方案 文件写使用多线程要加锁,还不如用单线程,你这是要干嘛

c语言怎么从文件中把数据分别读取,在线等,急求。

问题描述 c语言怎么从文件中把数据分别读取,在线等,急求. csv文件,格式为 字符,字符:字符字符,字符:字符字符,字符:字符...用什么方法把字符读出来分别存起来(三列对应三个字符串数组)?(按照第一列字符的字母顺序存入二叉树)(这三块字符里都有空格) 解决方案 最原始的方法,是你将 CSV 文件中的内容,将一行一行的读出来,然后再进行解析. 解决方案二: 还是用一个2维数组,fread()读取,然后分析字符数组.

网络编程_多线程的文件上传小示例

http://blog.csdn.net/zsw101259/article/details/7768908 1.多线程文件的上传,数据流向  1).客户端Socket:       ①out File对象         ②out 文件内容         ③in 服务端反馈信息  2).服务端的处理         ①每接收一个Socket,创建一个线程去处理这个Socket          ②in File对象:判断文件的类型.选择不同的传输方式.创建File对象关联文件        

android实现多线程下载文件(支持暂停、取消、断点续传)

多线程下载文件(支持暂停.取消.断点续传) 多线程同时下载文件即:在同一时间内通过多个线程对同一个请求地址发起多个请求,将需要下载的数据分割成多个部分,同时下载,每个线程只负责下载其中的一部分,最后将每一个线程下载的部分组装起来即可. 涉及的知识及问题 请求的数据如何分段 分段完成后如何下载和下载完成后如何组装到一起 暂停下载和继续下载的实现(wait().notifyAll().synchronized的使用) 取消下载和断点续传的实现 一.请求的数据如何分段 首先通过HttpURLConne

真机调试-真机测试出错误 在线等待大神

问题描述 真机测试出错误 在线等待大神 真机调试错误 No provisioning profiles found: No non–expired provisioning profiles were found. CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.1' 怎么回事?公司分了一个开发小组成员给我证书什么的也都是按教程来的 但是就是一真机调试就是这个. 运行一下提

在线等待,如何在程序中真接调如(百度,sohu.sogou)搜索片定义的关键字,比如我在程序中加入一个文本框,输入关键字后,点击百度搜索程序就直接调用百度搜索这个关键字,谢谢!

问题描述 在线等待,如何在程序中真接调如(百度,sohu.sogou)搜索片定义的关键字,比如我在程序中加入一个文本框,输入关键字后,点击百度搜索程序就直接调用百度搜索这个关键字,点sohu就调用SOHU,谢谢! 解决方案 解决方案二:我这有个百度的,我常用,你把下面的内容另存为HTML文件就行了.1.<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><!--savedfromurl=(0043)http:

急急急...在线等待。java开发的WEB界面中的某个按钮失效

问题描述 用java开发的WEB界面中的某个按钮(button按钮再用css再按钮上面加一个图片),在一个界面中点击按钮失效了,但是在别的机子上可以正常使用,用的IE8,在线等待. 解决方案 解决方案二:IE8有自带的developtools,可以调试页面的,你可以试下.另外不知道你说的失效时什么情况.解决方案三:就是点击以后,没有反应了解决方案四:没看明白~~解决方案五:比如说,你在一个修改用户信息的界面中有一个"取消按钮"和一个"确认按钮",其中一个按钮,点击后

日志系统中多线程写文件的问题

问题描述 大家好,我现在在写一个日志系统,因为我需要在另外的项目中使用这个日志系统,在项目中调用日志系统的输出日志功能时,需要把日志写到一个文件里面,因为项目中可能启动几十上百个线程,这样的话,就会出现很多线程都是向同一个文件里面写日志,考虑的性能和资源的前提下,有没有一个好的方案解决多个线程写文件的问题.在下考虑到的方法有:1,每次每个线程读写文件的时候,打开输入流,写完了以后关闭输出流.这样做的话每次都要打开关闭输出流,会不会很耗资源2,程序中使用一个集合保存需要写文件的输出流,当哪个线程需