我正在将大量数据写入文件,在关注文件的同时最终停止增长。
基本上我的任务是从数据库中获取信息,并打印出A列中的所有值 - 尽管它们是否是重复的值......
由于数据库表有很多行,并且数据库表在我的网络中,因此需要数天时间才能完成。因此我担心由于文件没有增长,它实际上不再写入文件了。
- 这很奇怪,我的代码中没有“catch”,所以如果写入文件时出现问题,是不是会抛出错误?!
我应该让任务完成(从今天开始估计2-3天),还是还有其他我不知道的事情在这里让我的应用程序不写入文件?!
我的算法就是这样的
Declare file Create new file Open file for writing (using bufferedwriter) get database connection get resultset from database for each row in the resultset - write column "A" to file - if row# % 100000 then write to screen "completed " + row# + " rows" when no more rows exist close file write to screen - "completed"
(使用Windows 7)
答案 0 :(得分:2)
您是否尝试过stream.flush()方法? (将至少通过stream.close()调用
- >所以试试'定期',看看是否有帮助。
警告:如果您过于频繁地冲洗,则会导致性能下降
E.g。试试
if rowNumber % 100000 then flush
答案 1 :(得分:1)
您可能遇到过数据库的一部分,其中没有重复项,查询已停止响应(或超时)或其他一些结论。您的问题中没有足够的数据可以真正回答。
一些建议:
答案 2 :(得分:0)
您未包含有关您的操作系统的详细信息。根据操作系统,有多种方法可以确定进程的打开文件(在UNIX上尝试:lsof),反之亦然,即使用文件的进程(UNIX:fuser)。
我还注意到你在你的例子中说过“/ n”,希望你的意思是“\ n”。反斜杠是换行的正确逃脱。如果没有,那可能是一个问题,因为IO层通常不会刷新,直到看到换行符或缓冲区填充。出于这个原因,请考虑使用WriteLine()而不是Write(),或者将flush作为另一个建议调用。
编辑:对于Windows,请尝试Process Explorer:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx