有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何知道以前是否处理过文件

如何确定文件是否已在以前处理?有一个远程存储位置,它是我的应用程序的文件源。我的程序从这个位置获取文件,并按计划方式处理它们。如何确保下次仅获取未处理的文件?我正在考虑使用文件属性。存档和修改日期可以是一个解决方案。但我了解到两位文件属性没有被使用。如何在Java中使用这些字段?顺便说一下,我不想使用数据库


共 (2) 个答案

  1. # 1 楼答案

    一种常见的策略是使用某种形式的哈希函数来创建校验和。记录文件的校验和,并将校验和标识的已处理文件列表与相关文件进行比较。如果相关文件的校验和在列表中,则表示您已经对其进行了处理

    保护已处理文件校验和的列表。如果你失去了它,或者它被破坏了,这可能是漫长而糟糕的一天

    <>为了防止不必要的网络流量,您可以考虑在远程存储库中准备“校验”文件,该文件包含对应于潜在输入文件的校验和。p>

    编辑:

    进一步评论后,可能会直接与文件系统属性交互。推荐的Java 1.7规范引入了特定于文件系统的属性视图,以直接与这些属性交互。您感兴趣的视图是“DosFileAttributeView”

    基本用法可能与此类似(“输入”是基于java“路径”的文件;添加必要的异常处理):

    // import as necessary from java.nio.file and java.io
    
    DosFileAttributeView view = input.getFileAttributeView(DosFileAttributeView.class);
    
    //Check if the system supports this view 
    if (view != null) 
    {
        DosFileAttributes attributes = view.readAttributes();
    
        // skip any file already marked as an archive
        if (!attributes.isArchive()) 
        {
             myObject.process(input)
             attributes.setArchive(true)
        }
    }
    
  2. # 2 楼答案

    你能重命名这个文件吗(例如“filename.archive”)?或者进入“归档”子目录