public class ForumCategoryDaoImpl implements ForumCategoryDao {
private String forumCategoryFilePath = null;
private final Map<String, String> forumCategoriesMap = new HashMap<String, String>();
// Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值
private volatile long lastVersion = 0;
public Map<String, String> getForumCategoriesMap() throws JDOMException, IOException {
final File forumCategoryFile = new File(this.forumCategoryFilePath);
if (forumCategoryFile.lastModified() > this.lastVersion) {
// 只有文件被修改时,才会进到这里。同一时刻,可能有多个线程进到该片段。(A线程、B线程)
synchronized (forumCategoriesMap) {
// 同一个时刻,只有一个线程,A线程先进来。
if (forumCategoryFile.lastModified() > this.lastVersion) {// A线程已经改变了最后修改时间,B线程无需再修改了
final SAXBuilder builder = new SAXBuilder();
builder.setIgnoringElementContentWhitespace(true);
Document doc = builder.build(forumCategoryFile);
final Element rootElement = doc.getRootElement().getChild("forum").getChild("allForums");
List<Object> children = rootElement.getChildren();
for (Object object : children) {
Element rowElement = (Element) object;
String fid = rowElement.getChild("fid").getText();
String name = rowElement.getChild("name").getText();
this.forumCategoriesMap.put(fid, name);
}
this.lastVersion = forumCategoryFile.lastModified();
}
}
}
return forumCategoriesMap;
}
/** spring inject */
public void setForumCategoryFilePath(String forumCategoryFilePath) {
this.forumCategoryFilePath = forumCategoryFilePath;
}
}
分享到:
相关推荐
PB12.5自定义对象n_cst_filetime 功能:读取设置文件最后修改时间
在这个场景中,我们需要使用到“打开文件”、“读取文件属性”等函数,特别是“读取文件属性”中的“获取文件修改日期/时间”功能,来获取每个文件的最后修改时间戳。 2. 文件夹遍历:使用“列出文件或目录”函数,...
// 获取文件修改时间 DateTime dtModifyTime = oSF.ModifyTime MessageBox("修改时间: " + String(dtModifyTime)) // 关闭文件 oSF.Close() Else MessageBox("无法打开文件: " + ls_filename) End If // ...
- 文件时间可能受到操作系统设置的影响,比如Windows系统默认在创建新文件时可能不会记录存取时间。 - 当处理远程文件或网络共享文件时,可能存在时间同步问题,导致获取到的时间可能与实际时间略有差异。 - 在某些...
在Windows系统中,可以使用命令行工具`fsutil`或第三方软件如"TimeChanger"来修改文件时间。在Linux和MacOS中,可以利用`touch`命令配合`-t`选项来实现。在编程环境中,例如Python,有`os.utime()`函数可以更改文件...
### Linux find 按文件修改时间查找文件 在Linux系统中,`find`命令是非常强大的文件搜索工具之一,它能够帮助用户根据不同的条件查找文件,包括文件名、大小、类型以及文件最后修改时间等。本篇文章将重点介绍如何...
Java写入文件、读取文件,复制、追加、修改文件最后修改时间、时间格式转换、查看端口使用情况
"文件时间修改器"是一款实用工具,专门设计用于帮助用户改变文件和文件夹的创建时间、访问时间和修改时间。这个软件的特点是其小巧的体积和用户友好的界面,使得时间戳的修改变得简单易行。 1. **文件时间戳详解**...
在IT领域,有时我们需要对文件的时间...总的来说,"文件时间修改器"是一个实用的工具,尤其在需要调整文件时间信息以符合特定需求时。但同时,也需要认识到这种操作可能带来的潜在问题,合理使用以避免不必要的麻烦。
创建时间是文件首次被创建的日期和时间,修改时间是文件内容最后一次被更改的日期和时间,访问时间则是文件最近一次被读取的日期和时间。这些时间戳对于追踪文件的历史和管理文件系统非常重要。 批量修改文件的...
文件时间属性包括创建时间、修改时间和访问时间,这些信息对文件管理和系统追踪文件活动具有重要意义。本篇文章将详细探讨如何修改文件的时间属性,并重点介绍“文件时间属性修改器”的应用。 首先,我们来了解文件...
函数 `GetFileDateTime` 是一个用于提取文件修改时间的示例。 ```pascal function GetFileDateTime(const FileName: string): TDateTime; var Handle: THandle; FindData: TWin32FindData; LocalFileTime: ...
下面将详细介绍这三个时间属性以及如何使用“文件时间修改器”来调整它们。 **创建时间**:文件创建时间是指文件在系统中首次被创建的日期和时间。这个时间戳记录了文件最初诞生的时刻,通常用于追溯文件的历史来源...
本文将详细讲解如何在Winform中读取和修改配置文件,特别是`appSettings`部分,这对于大多数桌面应用来说是至关重要的功能。 配置文件在.NET Framework中通常以`.config`为扩展名,例如`app.config`或`web.config`...
本文将详细讲解如何修改文件(文件夹)的属性,包括隐藏、只读、存档属性,以及如何调整创建时间、最后访问时间和最后修改时间。 一、隐藏属性 隐藏属性是一种保护措施,使文件或文件夹在常规视图下不可见。要修改...
从压缩包内的文件名称“宇润文件时间修改工具.exe”来看,这应该是一个名为“宇润”的文件时间修改软件的可执行文件。用户只需运行此程序,并按照界面提示操作,就可以对选定的文件或文件夹进行时间戳的修改。在使用...
该函数需要文件的完整路径作为参数,返回值为长整型,表示的是从1970年1月1日0时0分0秒到文件时间的秒数。要将这个时间戳转换为可读的日期和时间格式,可以使用OSDateTimeToDateTime函数。以下是使用OS函数获取文件...
访问时间则记录了文件最后一次被读取的日期和时间。不包括仅打开文件查看元数据或更改文件位置的情况,因为这些操作不会改变文件内容,所以不会更新访问时间。 在不同的操作系统中,获取和修改这些时间戳的方法有所...
在ASP.NET编程中,C#.NET提供了处理文件时间戳的能力,包括读取和修改文件的创建时间以及修改时间。这对于自动化工作流程,如博客文章的管理和更新,尤其有用。本文将详细解释如何使用C#来操作这些文件属性。 首先...
在IT领域,文件属性时间修改是...总的来说,"文件属性时间修改器"是一个实用的工具,它提供了对文件时间属性的直接控制,满足了用户在不同场景下的特定需求。在使用过程中,了解其功能、限制以及潜在风险是至关重要的。