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

Java 文件锁

阅读更多
有时候,我们需要以独占的方式访问某个文件,因此,需要在打开文件时,对文件上锁,以防其他人或进程也访问该文件。Java本身提供了俩种锁文件的方式:
方式一:用RandomAccessFile类操作文件
RandomAccessFile的open方法,提供了参数,实现以独占的方式打开文件:
    new RandomAccessFile(file, "rws")
其中的“rws”参数中,rw代表读写方式,s代表同步方式,也就是锁。这种方式打开的文件,就是独占方式。

方式二:用文件通道(FileChannel)的锁功能

如:
RandomAccessFile raf = new RandomAccessFile(new File("c:\\test.txt"), "rw");
    FileChannel fc = raf.getChannel();
    FileLock fl = fc.tryLock();
    if (fl.isValid()) {
      System.out.println("get the lock!");
但这俩种方式,都只能通过RandomAccessFile访问文件,如果只能通过InputStream来访问文件,如用DOM分析XML文件,怎么办呢?
其实,FileInputStream对象,也提供了getChannel方法,只是缺省的getChannel方法,不能锁住文件,所以,如果需要,就必须自己重写一个getChannel方法,如:
public FileChannel getChannel(FileInputStream fileIn, FileDescriptor fd) {
    FileChannel channel = null;
    synchronized (fileIn) {
      channel = FileChannelImpl.open(fd, true, true, fileIn);
      return channel;
    }
  }

原文转载地址:http://blog.sina.com.cn/s/blog_46e73e77010001cj.html
分享到:
评论

相关推荐

    Java文件锁笔记

    :Java新IO】_文件锁笔记032003

    java 文件锁的简单实现

    java 文件锁的简单实现 文件锁是指对文件的访问和修改进行控制和限制,以确保文件的安全性和一致性。在 Java 中,可以使用 FileLock 类来实现文件锁。下面将详细介绍 Java 文件锁的简单实现。 什么是文件锁 文件...

    java文件锁的实现

    在Java编程语言中,文件锁是一种用于控制对文件进行并发访问的重要机制。它允许一个或多个进程在同一时间对文件的特定部分进行独占访问,从而防止数据的不一致性。本篇将深入探讨Java中文件锁的实现,以及如何在实际...

    单文件锁,锁excel word的 文件很管用

    只锁一个文件,excel word 自带密码不好用,就试一下这个吧单个文锁,目前我也没找到破解的方法,如果忘记密码的了呵呵呵,上帝保佑,如你知也通知我一下吧 ths

    nio.rar_FastCopyFile.java_NIO_UseFloatBuffer.java_java nio_文件锁

    在给定的压缩包文件中,我们关注的是"FastCopyFile.java"、"UseFloatBuffer.java"以及NIO中的文件锁功能。 首先,让我们详细了解一下`FastCopyFile.java`。这个文件很可能是一个示例程序,演示了如何使用Java NIO...

    java 写文件 java 写文件 java 写文件 java 写文件

    7. **同步写入**:如果多线程环境需要同时写入文件,可以考虑使用FileChannel的锁机制,以防止数据交错。 8. **字符编码**:默认情况下,FileWriter使用平台默认编码。如果需要指定特定编码,可以使用`new ...

    简单java文件过滤

    当然,实际应用中可能需要考虑更多因素,如错误处理、文件锁、并发访问等。在大型项目中,你可能会选择使用Apache Commons IO库或Java 8的Stream API来简化文件操作。 总的来说,“简单java文件过滤”涉及了Java中...

    java多线程之并发锁

    Java 多线程之并发锁 Java 中的多线程编程是指在一个程序中同时运行多个线程,以提高程序的执行效率和响应速度。在多线程编程中,线程间的同步是非常重要的,因为不同的线程可能会同时访问同一个共享资源,导致数据...

    java分布式锁实现代码

    本文将深入探讨如何使用Redisson和Curator框架来实现Java环境中的分布式锁。 首先,让我们来看一下Redisson实现的分布式锁。Redis是一个高性能的键值数据库,常被用作分布式系统的缓存或数据存储。Redisson是基于...

    Java 操作 XML 文件

    java 读取 XML 使用 xml 。。。。。。。。。。。

    Java版文件系统

    Java的`java.util.concurrent`包提供了锁和同步原语,如`synchronized`关键字、`ReentrantLock`和`Semaphore`,用于管理并发访问。 7. **文件系统设计**:一个完整的文件系统需要考虑目录结构、文件命名规则、文件...

    java 分割文件 将大文件分割成小文件

    例如,如果文件正在被其他进程使用,可能需要实现锁机制。同时,确保在处理文件后正确关闭输入/输出流,以防止资源泄露。 总结起来,Java提供了丰富的API来处理文件操作,包括分割大文件。通过结合`FileInputStream...

    基于Java的FastDFS大文件上传与断点续传设计源码

    该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供了文件上传、文件处理、文件存储等功能。通过该项目,开发者可以学习并实践Java技术的应用,为后续的Web开发奠定...

    java 加密锁例子

    在Java编程环境中,加密锁(通常称为硬件保护锁或安全密钥)是一种物理设备,用于保护软件不被非法复制和使用。加密锁通常通过USB接口连接到计算机,它包含一个微处理器,可以执行复杂的加密算法,确保只有授权的...

    基于Java向zip压缩包追加文件

    - 为了保证操作的原子性,可以考虑在处理过程中使用文件锁,以防止在压缩过程中文件被其他进程修改。 - 如果ZIP文件非常大,解压和再压缩的过程可能会消耗大量时间和资源,因此在处理大数据量时需要谨慎设计。 6....

    java大文件上传

    这里需要注意文件锁的管理,以防止并发上传时的文件冲突。 对于断点续传,`plupload`会在客户端保存上传进度,如果上传中断,用户可以继续未完成的上传,服务器端需要有相应的机制识别并处理这些续传请求。这通常...

    java实现多线程文件传输

    10. **安全性**:在多线程环境下,文件操作需注意文件锁,避免同一时刻多个线程修改同一文件,造成数据混乱。 通过以上知识点的综合运用,我们可以构建一个高效、安全的多线程文件传输系统。实际编程中,还需要根据...

    java调用Oracle的锁表命令

    文件`ConnectOracle.java`可能包含了建立JDBC连接的代码。这通常涉及以下步骤: - 导入所需的JDBC库,如`import java.sql.Connection; import java.sql.DriverManager;` - 加载Oracle JDBC驱动,例如`Class.for...

    java文件操作

    很久以前的工具类代码不过很实用,java的文件读写创建目录复制,移动,文件序列化,反序列化,文件锁,xml文件的读取,诸多内容囊括其中注释也十分详细,学习文件流的不二选择

    自己用JAVA做的一个多线程文件服务器

    【标题】:“自己用JAVA做的一个多线程文件服务器” 这篇博客文章主要介绍了一位作者使用Java编程语言构建的多线程文件服务器。在IT行业中,文件服务器是用于存储和管理网络上共享文件的重要组件,而使用Java实现...

Global site tag (gtag.js) - Google Analytics