「大文件如何处理java」文件大怎么办
今天给各位分享大文件如何处理java的知识,其中也会对文件大怎么办进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java大文件
- 2、Java 读取大文件有什么可以优化的吗
- 3、Java 批量大文件上传下载如何实现?
- 4、java 大文件分片上传处理如何实现?
- 5、Java如何处理XML大文件
- 6、java 中大文件 复制\移动 该如何处理,不能太占内存?
java大文件
从你的代码来看,不应该是方法不支持大文件,而是你的系统可能不支持这么大的文件操作!
再者,想向数据库中保存10G的文件,怎么保存呢?Blob字段最大支持4G,10G的话,可以分割吗?
Java 读取大文件有什么可以优化的吗
优化一:采用内存硬盘(RamDisk)
内存硬盘可以极大地提高文件的读写速度,行情的读写是应用内存硬盘的绝好情况:
1,可以把行情小站的行情文件地址配置在内存硬盘上。这样可以加速行情小站写文件的速度。
2,本系统再从内存硬盘读取,又可以加快读取速度。
3,内存硬盘掉电后会丢失文件,这里基本不在乎这个缺点,因为行情文件本来就是临时的,如果有持久化的需要,大部分内存硬盘也支持持久化的功能。
优化二:采用JNotify,用通知替代轮询
由于行情小站会不断的更新行情dbf文件,系统需要探测到一旦行情文件被更新,就立即读取。传统的策略是不断轮询行情文件的状态,如果发现行情文件的最后修改日期(或者再加上文件大小)改变时,就认为文件被更新。但是这种方式既低效,时延又高且不稳定。假设即使把轮询时间设置为10ms一次(这意味着1秒钟就要轮询100次), 平均时延也要5ms。
JNotify库支持Windows,Linux和MacOS,允许监视一个文件夹,当这个文件夹下的文件被增删改时,发起回调通知。代码示例如下:
以上代码:
1,只要监视文件修改,因此只要设置mask = JNotify.FILE_MODIFIED
2,不需要递归地监视子目录,设置watchSubtree = false
3,由于监视的是文件夹,而不是文件,在fileModified方法中,要判断修改的是不是关心的文件(即行情文件),如果不是,则忽略。如果是,就调用readHangqingFile开始读取。
JNotify是基于操作系统API实现的,即使用JNI实现的,因此除了jar文件,还包含.dll文件和.so文件。用eclipse开发时,需要指定这些本地库的目录,如下图所示:
部署时,需要将本地库放在执行根目录下,或者用-Djava.library.path=/native/library/path 指定本地库的位置。
采用JNotify,用(基于操作系统的)通知而不是轮询,可以非常快地发现文件被更新,根据测试时间1ms (我觉得应该远小于1ms,但是由于文件修改时间单位是毫秒,没办法更精确的测量)。
Java 批量大文件上传下载如何实现?
解决这种大文件上传不太可能用web上传的方式,只有自己开发插件或是当门客户端上传,或者用现有的ftp等。
1)开发一个web插件。用于上传文件。
2)开发一个FTP工具,不用web上传。
3)用现有的FTP工具。
下面是几款不错的插件,你可以试试:
1)Jquery的uploadify插件。具体使用。你可以看帮助文档。
java 大文件分片上传处理如何实现?
如果是页面传至后台,那么页面上传文件的时候进行分片处理,如果是后台之间调用,直接代理里面分片处理。关键点,当前一片传输完毕之后,收到成功返回才开始传输下一片如果传输失败则重传当前片数,超时重传。传输时带上文件唯一标识,文件当前片数,总片数,当前片数md5校验值等。必要参数。 大致为这样,注意不要内存泄露了。
Java如何处理XML大文件
解析xml的方式方法有很多种
DOM方式解析XML
Dom解析是将xml文件全部载入到内存,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,与平台无关,java提供的一种基础的解析XML文件的API,理解较简单,但是由于整个文档都需要载入内存,不适用于文档较大时。
2.SAX方式解析XML
基于事件驱动,逐条解析,适用于只处理xml数据,不易编码,而且很难同时访问同一个文档中的多处不同数据
3.JDOM方式解析XML
简化与XML的交互并且比使用DOM实现更快,仅使用具体类而不使用接口因此简化了API,并且易于使用
4.DOM4j方式解析XML
JDOM的一种智能分支,功能较强大,建议熟练使用
但是要注意你解析xml的场景,dom这种解析方式是吧整个文档加载到内存,解析、修改都比较方便,但是比较耗内存
sax方式基于事件驱动,解析不耗内存,
java 中大文件 复制\移动 该如何处理,不能太占内存?
就用普通的fileinputstream就行吧,java里对文件的读写还是比较快的。
不是这样的吧。。。。
你可以设置下缓冲区的大小嘛,想设多大就设多大。
以前我处理过类似的情况,几百兆的日志文件吧,好像也没做什么特别的处理,设下缓冲区就可以了,哪儿能文件多大就全部读到内存里。。。
关于大文件如何处理java和文件大怎么办的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-20,除非注明,否则均为
原创文章,转载请注明出处。