奇怪的问题:是否有可能在资产文件夹中获取文件的最后修改日期,或者这是毫无意义和不可能的?
我问,因为我在应用程序启动时将一个只读数据库复制到数据文件夹中,但是如果现有文件比存储在assets文件夹中的文件旧(或者如果文件),则只会执行复制不存在).
如果那不可能,任何人都知道一个更好的约定?如果需要,我可以在一个单独的问题中发布.TIA!
我正在编写一个shell脚本,我必须在其中找到文件的最后修改日期.
Stat
命令在我的环境中不可用.
所以我使用'ls'
如下获得所需的结果.
ls -l filename | awk '{print $6 $7 $8}'
Run Code Online (Sandbox Code Playgroud)
但我在很多论坛上都读过,解析ls
通常被认为是不好的做法.虽然它(可能)大部分时间都可以正常工作,但并不能保证每次都能正常工作.
有没有其他方法可以在shell脚本中获取文件修改日期.
我正在使用PHP生成动态内容.
我正在发送以下HTTP标头:
HTTP/1.1 304 Not Modified
Date: Sun, 09 Dec 2012 17:24:41 GMT
Server: Apache
Connection: keep-alive, Keep-Alive
Keep-Alive: timeout=1, max=100
Etag: "237f43b800e655dbe6567f7d32d34c99"
Expires: Sun, 16 Dec 2012 17:24:41 GMT
Cache-Control: max-age=604800
Vary: Accept-Encoding
Run Code Online (Sandbox Code Playgroud)
我后来检查Etag header('HTTP/1.1 304 Not Modified')
是否匹配发送一个.这与Chrome和Firefox完美配合.但是,Safari(版本6.0.2)不会发送"If-Modified-Since"和"If-None-Match"标头.这是Safari在第二页上发送的Request-Header命中:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Cache-Control: max-age=0
Run Code Online (Sandbox Code Playgroud)
在该页面上链接的所有其他文件在适当的时候接收正确的Request-Headers和Safari使用的缓存文件或304.
为什么不向Safari发送正确的Request-Header?我能改变什么?
谢谢!
我想要做的比从文件列表中选择文件更复杂.我将从一个目录开始,然后我想更改为最近修改的目录.然后我想在子目录中重复该过程,然后,在其中,我想选择最近修改的excel文件并打开它.
这样做的最佳方法是什么?
我应该研究哪些对象/方法?
我修改了webroot中各种文件夹中的一些文件.这是开发环境.现在我必须找到昨天修改的所有文件才能迁移到制作.
有没有办法(Linux命令)只列出我的webroot树中昨天修改过的那些文件?
我正在缓存文件中的一些信息,我希望能够定期检查文件的内容是否已被修改,以便我可以再次读取文件以获取新内容(如果需要).
这就是为什么我想知道是否有办法在C++中获取文件的最后修改时间.
有谁知道如何检查文件访问日期和时间?该函数返回修改的日期和时间,我需要一些东西,将访问的日期时间与当前的日期和时间进行比较.
我需要写一个批处理文件来做一些事情
最初我认为我的问题非常简单 - 捕获位于指定目录中的txt文件的修改日期,将该日期与当前日期进行比较,如果它们相同则执行某些操作.如果他们不是那么做其他事情.
我用来捕获当前日期的行是:
%date%
Run Code Online (Sandbox Code Playgroud)
我用来捕获指定文件的修改日期的行是:
SET filename="C:\New Folder\New.txt"
FOR %%f IN (%filename%) DO SET filedatetime=%%~tf
ECHO %filedatetime:~0,-6% >> %destination%
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我只是echo
用来查看返回的内容,似乎返回了日期,但我得到了额外的信息:
2012/02/19 02
我想知道如何获得可比较的上述值以及如何正确比较它们.
当我mtime
使用Java 读取文件时Files.getLastModifiedTime
,返回值被截断为整秒.我知道这可以在其他系统上使用毫秒分辨率的mtimes,那么我的不同之处呢?
这是一个完整的独立测试,可以编译和运行:
import java.nio.file.attribute.FileTime;
import java.nio.file.Files;
import java.nio.file.Paths;
public class Test {
public static void main(String[] args) throws java.io.IOException {
FileTime timestamp = Files.getLastModifiedTime(Paths.get("/tmp/test"));
System.out.println(timestamp.toMillis());
}
}
Run Code Online (Sandbox Code Playgroud)
输出是(使用我的特定测试文件)1405602038000
,而ls
显示:
$ ls --full-time /tmp/test
-rw-rw-r-- 1 daniel daniel 0 2014-07-17 16:00:38.413008992 +0300 /tmp/test
Run Code Online (Sandbox Code Playgroud)
我希望Java输出1405602038413
.
我用ext4在Linux上运行.我尝试了openjdk 1.7和Oracle jdk 1.8.