`
cq520
  • 浏览: 166458 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java文件操作,缓存机制依旧有瓶颈

阅读更多

我们在使用windows系统时发现,复制一个文件的再粘贴的速度大体上是一致的,我们可以猜想这是微软内部的工作人员设计的一个算法,而这个操作所能实现的最大速度是由什么影响的呢??

那么我们可不可以自己设计一个方法来代替windows自带的复制粘贴方法来达到更快的传输速度呢??

下面的一段代码就以缓冲的形势来实现了文件的copy工作:

publicvoid copybyte(String srcFile,String destFile)throws IOException{

    //创建输入流

    InputStream ins=new FileInputStream(srcFile);

    //创建输出流

    OutputStream outs=new FileOutputStream(destFile);

    //创建缓冲区,一次读取16K的文件

    byte[] buf=newbyte[16384];

    int i=ins.read(buf);

    System.out.println("开始复制....");

    //获取当前时间

    System.out.println(System.currentTimeMillis());

    while(i!=-1){

      outs.write(buf);

      i=ins.read(buf);

    }

    System.out.println(System.currentTimeMillis());

    System.out.println("复制结束....");

    //关闭流

    ins.close();

    outs.close();

}

    首先,我使用了一个860M的程序进行测试,发现在windows中复制粘贴的速度大体上是在40M每秒左右,复制一个这样的文件大约需要20多秒的时间,而使用上述方法进行复制的时候,经过反复的测试,发现时间基本上在23秒左右的样子,而且当数值超过16K之后,速度就不会再增大了,而调整为8K的时候,时间大概在29秒左右,其实这也就解释了一个现象,算法本身并不能超过电脑硬盘与CPU之间的交互速度,硬件依旧是瓶颈,但是我们能不能用一块外置的更快的硬盘来实现提升原本硬盘的速度呢??

此外,看过BufferredInputStream源码的都知道,里面有这样的一个属性:

privatestaticintdefaultBufferSize = 8192;

这就说明,缓冲输入流定义的缓冲数组的大小是8K,并没有达到计算机的极限速度,计算机还有更多的秘密等待着我们去发现呢

分享到:
评论

相关推荐

    Java 中常用缓存Cache机制的实现

    Java 中常用缓存Cache机制的实现 缓存机制是指将程序或系统经常要调用的对象存在内存中,以便快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。缓存主要可分为二大类:一、通过文件...

    java 通过文件实现缓存

    java实现缓存可以通过读取本地文件的方式实现,改代码就是通过读取本地文件实现缓存的简单例子

    Java实现LRU缓存机制:深入解析与高效编码实践

    LRU缓存机制是一种非常实用的缓存淘汰策略,它在很多应用场景中都有广泛的应用。在Java中实现LRU缓存,可以通过使用LinkedHashMap来简化实现,也可以手动实现以获得更好的控制。在多线程环境中,还需要考虑缓存的...

    java高速文件缓存

    在Java中实现高效的文件缓存策略,可以利用Java集合框架、内存管理机制以及第三方库来达到目的。 一、Java内存模型与缓存策略 Java内存模型分为堆内存(Heap)和栈内存(Stack),其中堆内存用于存储对象实例,包括...

    Java版文件系统

    在Java编程环境中,...开发者可以构建一个功能完备且健壮的Java版文件系统,虽然它可能无法完全替代操作系统内的原生文件系统,但作为教学或研究目的,这样的项目无疑能深入理解文件系统的工作原理和Java的I/O机制。

    利用缓存机制快速读取XML文件数据

    ### 缓存机制在XML文件数据读取中的应用 #### 一、背景介绍与问题提出 在现代软件开发中,XML(可扩展标记语言)作为一种轻量级的数据存储和交换格式,广泛应用于不同系统间的数据交换及配置文件的管理。然而,当...

    java通过文件头内容判断文件类型

    在Java编程中,判断文件类型通常不是通过文件扩展名,而是通过读取文件的头部字节来识别。这是因为有些文件可能没有明确的扩展名,或者扩展名被恶意篡改。文件头内容通常包含特定的标识符,这些标识符是文件格式的...

    Class文件转JAVA

    轻松方便的把class文件转化为java文件

    SSM框架的学习与应用-Java EE企业级应用开发学习记录(第四天)Mybatis的关联映射和缓存机制

    深度对MyBatis关联映射进行深入学习,包括MyBatis缓存机制、配置文件、映射文件的使用。 本文可以归类为MyBatis框架的学习教程,其核心主题是带领读者深入掌握MyBatis的配置与使用。 包含文件: 1.项目所需的所有架包...

    java读取shp文件代码

    - 此外还需要导入标准Java库如`java.io.*`等用于文件操作。 #### 代码分析与解读 1. **类定义**:`public class ShapefileReader`定义了一个名为`ShapefileReader`的公共类,用于处理Shapefile文件的读取工作。 ...

    详解java缓存ppt讲义

    Java缓存技术在企业级开发中扮演着至关重要的角色,主要目的是提高系统性能,减少不必要的计算和I/O操作。本文将深入探讨缓存的概念、作用、类型以及在Java环境下的应用。 缓存,简单来说,就是高速缓冲存储器,它...

    J2Cache 基于内存和 Redis 的两级 Java 缓存框架

    Java 两级缓存框架,可以让应用支持两级缓存框架 ehcache(Caffeine) + redis 。避免完全使用独立缓存系统所带来的网络IO开销问题。J2Cache 是 OSChina 目前正在使用的两级缓存框架(要求至少 Java 8)。第一级缓存...

    Java模拟操作系统(内存管理,进程管理,文件管理,进程通信)

    Java模拟操作系统是一个基于Java编程语言实现的微型操作系统模型,它主要涵盖了四个核心领域:内存管理、进程管理、文件管理和进程通信。这样的项目旨在帮助开发者理解操作系统的工作原理,并提供了一个实践平台来...

    Java读取解析GRIB2文件

    确保有适当的错误处理机制,如异常捕获,并利用日志记录进行调试。 以上就是使用Java读取和解析GRIB2文件的基本步骤和涉及的关键技术。实际应用中,你可能还需要根据具体需求进行数据处理、统计分析或集成到更大的...

    Java中常用缓存Cache机制的实现

    Java中的缓存机制是优化应用程序性能的关键技术之一。它通过将频繁访问的数据存储在内存中,使得后续的访问能够快速地获取数据,避免了硬盘I/O操作,显著提高了程序运行速度。本文主要介绍的是Java中一种简单的基于...

    仿redis缓存Java版轻量级缓存组件LocalCache

    仿redis缓存Java版轻量级缓存组件LocalCache,基于JVM内存实现数据缓存及过期机制

    java实现sftp操作工具类

    1分让你得到sftp常用操作工具,工具实现如下操作: 1)得到当前工作目录地址 2)改变目录为配置的远程目录 3)取文件目录列表 4)取文件列表 5)下载文件 6)复制文件 7)删除文件 8)目录是否存在,文件是否存在 9)移动文件 ...

    java按行读取大文件并解析入库

    在Java编程中,处理大容量文本文件是一项挑战,因为传统的逐行读取方式可能会消耗大量内存,导致程序崩溃。为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行...

    JAVA文件传输P2P源码

    【JAVA文件传输P2P源码】是一种在局域网内实现文件共享和传输的程序,主要用于方便在没有专用文件传输工具的情况下,朋友之间能够快速、便捷地分享文件。P2P(Peer-to-Peer)技术是其核心,它允许网络中的每一个节点...

Global site tag (gtag.js) - Google Analytics