`
libg
  • 浏览: 58483 次
  • 性别: Icon_minigender_1
  • 来自: 河北邯郸
社区版块
存档分类
最新评论

对文件加锁应怎样解决呢?

阅读更多

   对文件加锁应怎样解决呢?

           目的: 对文件读写时进行异步化、

                              我只对一个文件进行 读、写、清空、操作;进行异步化

                              实现的步骤顺序是:

                                  《1》、随时对文件进行写操作

                                  《2》、一分钟后去读取这个文件的内容、然后再清空内容、

                                  《3》、就这么一直循环的走。

                                   《4》、在以上《1、2》步骤之间都包含对文件进行加锁。

               恩、我遇到的问题是:

                                    《1》、如果在读取文件的时候、刚读取完、这时对文件进行了解锁、解锁后另一个文件对象就可以

                                操作这个文件了、      偏偏在这时对文件进行了写、然而在读完后的这个方法中却要清空这个文件的内容、

                               这样一来数据就不完整了不是。这是我的一个难题啊、请大家仔细看看我的说明、然后给我一个答案谢谢。

            请大家吧、给我一个好的解决方案!!!

 

分享到:
评论
10 楼 cbhyk 2007-11-13  
java.nio.channels.FileChannel.tryLock()
9 楼 wl95421 2007-11-13  
千万不要忘记删除,否则你就死了
可以参考Lucene的代码
8 楼 libg 2007-11-12  
  恩、ok、我明白了。
7 楼 caisd 2007-11-12  
某个线程读取的时候,生成一个以.lock结尾的文件,其他要读时,先判断是否存在这lock文件
6 楼 libg 2007-11-12  
   恩、我还是不会啊、你就在详细一点吧、举一个例子如何呢?
5 楼 timerri 2007-11-12  
他是说,用其他的文件作为锁使用。自己实现锁机制
4 楼 libg 2007-11-12  
   上面那位大哥你说的是什么意思啊!!!

    小弟看不懂啊!!!
   
   能不能详细一点阿!!!
3 楼 wl95421 2007-11-12  
象Eclipse或者lucene一样,使用.lock文件
2 楼 libg 2007-11-12  
恩、你这个思路我懂、但是这时已对文件进行了加锁、如果在解锁之前在创建一个文件对象执行的话回报错的
   错误信息:另一个程序已锁定文件的一部分,进程无法访问。

   但是如果用当前这个对象的话我不知道因怎样清空这个文件
  
如下是我使用的方法写的:
public String setAttribute(String key, String value) {

FileLock flock = null;
String oldValue = null;
FileChannel lockfc = null;
RandomAccessFile fis = null;
try {
// 打开一个临时的文件,注意同一共享内存,该文件名要相同。
fis = new RandomAccessFile(filename, "rw");
// 获得文件通道
lockfc = fis.getChannel();
// 获得文件的独占锁,若文件已被人锁定,则一直等待
flock = lockfc.lock();
oldValue = (String) recTreeMap.put(key, value);//recTreeMap对象是一个全局TreeMap对象
// set the file point to the beginning of the file
lockfc.position(0);
ObjectOutputStream out;
out = new ObjectOutputStream(Channels.newOutputStream(channel));
out.writeObject(recTreeMap);
out.close();
} catch (IOException ee) {
ee.printStackTrace();
} finally {
// if flock is not null, we should release it
try {
if (flock != null)
if (flock.isValid()) {
flock.release();
}
if (lockfc != null)
lockfc.close();
if (fis != null)
fis.close();

} catch (ClosedChannelException o) {
o.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception er) {
er.printStackTrace();
}
}
}
我是这样写进去的:但是在读的时候也是使用相同的方法进行读的。
就是在读的时候怎样使用当前的对象进行清空这个文件中的内容。
1 楼 rtdb 2007-11-12  
> 在读取文件的时候、刚读取完、这时对文件进行了解锁
> 然而在读完后的这个方法中却要清空这个文件的内容

所以,应当是清空这个文件的内容后,再解锁

相关推荐

    Linux系统对文件进行加锁

    本篇文章将深入探讨如何使用Flock函数在Linux中对文件进行加锁,并解释其工作原理和注意事项。 Flock函数是Linux提供的系统调用,用于对文件描述符上的文件或文件区域进行锁定。它允许程序在文件系统级别进行同步,...

    通过数据库给文件加锁

    本篇文章将深入探讨“通过数据库给文件加锁”的概念、原理以及实践方法。 文件锁定通常在多用户环境中至关重要,例如在文件共享系统、协同编辑软件或任何需要同时处理相同资源的应用程序中。数据库系统提供的锁机制...

    svn加锁后的解决办法

    SVN(Subversion)是一个版本控制系统,用于管理对文件和目录版本的跟踪。使用SVN时,开发者可以进行检出(checkout)、更新(update)、提交(commit)和锁定(lock)等操作。当出现文件被意外锁定的情况时,可能会...

    便携式文件夹加锁小工具

    标题中的“便携式文件夹加锁小工具”指的是一个轻量级的应用程序,它能够帮助用户保护他们的私人文件夹,防止未经授权的访问。这样的工具通常具有简单易用的界面,用户可以快速设置密码,对特定的文件夹进行加密,...

    文件夹加锁王2009企业版

    “文件夹加锁王2009企业版”是一款专为企业用户设计的文件和文件夹加密工具,旨在帮助用户对重要数据进行加密和保护。通过这款软件,企业可以轻松地锁定和隐藏其内部的重要文件夹,防止非法访问和篡改,确保公司信息...

    计算机软件-商业源码-查看某一文件被谁加锁.zip

    当一个用户或进程对文件加锁后,其他用户尝试修改时会被阻止,直到锁被释放。文件锁定可以是共享锁(允许多个读取,但不允许写入)或独占锁(仅允许一个用户读写)。 4. **文件锁定机制**:不同的操作系统和编程...

    AutoCAD加锁程序

    3. **测试**:在实际使用前,应在非关键项目上测试加锁脚本,确认其功能正常且不会影响其他操作。 4. **培训**:如果团队中有多人使用,确保所有相关人员都理解如何正确使用和解除锁定。 5. **更新维护**:随着Auto...

    cdm加锁工具

    综上所述,"CMD加锁工具 2008"可能具备上述部分或全部特性,为用户提供了一套全面的数据保护解决方案。在实际应用中,用户需要根据自身的具体需求选择合适的CDM工具,并定期更新和维护,以确保数据安全和系统的稳定...

    usb加锁王

    3. 文件权限管理:用户可以设定每个文件或文件夹的访问权限,比如读取、写入、删除等,限制他人对USB设备上的特定文件进行操作。 4. 隐蔽模式:软件还提供一种隐蔽模式,使得USB加锁王在运行时不显示任何界面,提高...

    文件夹加锁隐藏伪装专家

    是解决你文件保密的最佳助手! 软件功能特点: 1. 操作简单:本软件是真正免安装,下载后为单一程序,直接运行即可使用,软件可放在任何地方。 2. 使用不留痕: 使用后不留任何痕迹,根本没人知道你...

    PHP对文件进行加锁、解锁实例

    文件加锁是解决这个问题的一种有效手段,它允许你控制对文件的访问,确保在任何时刻只有一个进程可以读取或写入文件。`flock()` 函数是PHP提供的一种用于文件加锁的机制。 ### flock() 函数 `flock()` 函数用于在...

    usb加锁王 v3.0

    《USB加锁王 v3.0:保护个人数据安全的利器》 在信息化时代,USB设备作为便携式存储工具,被广泛应用于数据传输和备份。然而,这也带来了一定的安全隐患,因为任何人都可能利用USB接口轻易地窃取或篡改您电脑上的...

    PHP使用flock实现文件加锁的方法

    在PHP编程中,文件加锁是一个重要的概念,特别是在多用户并发访问同一文件时,为了防止数据的不一致性和冲突,我们需要使用文件加锁机制。`flock()` 函数是PHP中用于实现文件加锁的关键函数,它允许在跨平台的环境中...

    加锁的队列操作示例源代码

    "加锁的队列操作示例源代码"提供了一个解决方案,通过实现一个加锁的缓冲区类来支持生产者消费者模式。这个模式是并发编程中的经典设计模式,它允许线程之间有效地共享资源,而不会出现数据竞争。 生产者消费者模式...

    文件夹加锁王

    《文件夹加锁王》是一款专门针对个人及企业用户设计的高效、安全的文件和文件夹加密软件。这款软件的企业版2013_9.35版本在保护用户隐私和敏感数据方面表现出色,提供了强大的加密功能,确保您的重要信息不被未经...

    便携式文件夹加锁工具

    "便携式文件夹加锁工具"是为了解决这一需求而设计的软件,它允许用户对U盘或者电脑上的文件夹进行快速加密,确保只有授权的用户能够访问这些敏感信息。 该工具的核心功能包括: 1. **便携性**:作为一个便携式应用...

    文件夹加锁软件——易锁

    文件夹加锁软件 :一般其它加密软件,通常需要手工执行加密动作或需将文件保存于特定磁盘目录中,大都是“保存”那一瞬间才能进行加密。这样操作比较麻烦,且效率、安全、便捷、广泛性等也都不佳!而EZ-Lock是通过一...

    VC++加锁文件检查工具

    首先,我们要理解文件加锁的概念。在多任务操作系统中,为了防止多个进程同时修改同一文件导致数据冲突,系统会采用文件锁机制。当一个进程打开并写入一个文件时,它会请求系统对文件进行加锁,其他试图访问该文件的...

    windowsC++多线程加锁信号量共享内存

    然而,多线程编程也带来了一些挑战,如数据竞争和死锁问题,这些问题需要通过同步机制来解决。在这个场景下,"windowsC++多线程加锁信号量共享内存"就是我们要探讨的核心主题。 首先,让我们了解什么是多线程。多...

    文件加密小程序

    它主要用于对用户的个人文件进行安全保护,通过加密技术确保数据在存储或传输过程中的隐私不被泄露。这款小程序的核心功能是实现文件的加密与解密操作,以满足用户对于数据安全的基本需求。 在提供的文件列表中,...

Global site tag (gtag.js) - Google Analytics