파일이 C#에서 마지막으로 수정 된 시간을 확인하는 방법을 찾고 있습니다. 파일에 대한 전체 액세스 권한이 있습니다.Windows OS에서 C#으로 파일을 마지막으로 수정 한 시간을 확인하십시오.
답변
System.IO.File.GetLastWriteTime이 필요합니다.
또는 심지어 가능합니다 [System.IO.File.GetLastWriteTimeUtc] (https://msdn.microsoft.com/en-us/library/system.io.file.getlastwritetimeutc (v = vs.110) .aspx) –
그냥 File.GetLastWriteTime을 사용하십시오. 이 페이지에는 사용 방법을 보여주는 샘플이 있습니다.
정적 메서드 인 File.GetLastWriteTime
만 있으면됩니다.
예 :
DateTime lastModified = System.IO.File.GetLastWriteTime("C:\foo.bar");
Console.WriteLine(lastModified.ToString("dd/MM/yy HH:mm:ss"));
Upvote for 코드 예제를 포함하여 시간을 보냅니다. – PhilNicholas
것은, 값이 때로는 즉시 OS가 업데이트되지 않습니다 예상대로 함수가 File.GetLastWriteTime 항상 작동하지 않습니다 유의하십시오. 파일이 바로 전에 수정 된 경우에도 이전 타임 스탬프를 얻을 수 있습니다.
OS마다 동작이 다를 수 있습니다. 예를 들어,이 단위 테스트는 개발자 머신에서 매번 잘 수행되었지만 빌드 서버에서는 항상 실패합니다.
[TestMethod]
public void TestLastModifiedTimeStamps()
{
var tempFile = Path.GetTempFileName();
var lastModified = File.GetLastWriteTime(tempFile);
using (new FileStream(tempFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
}
Assert.AreNotEqual(lastModified, File.GetLastWriteTime(tempFile));
}
는 File.GetLastWriteTime seems to be returning 'out of date' value
옵션을 참조하십시오
가) 가끔 누락과 함께 살고 있습니다.
b) 관측자 패턴 (예 : tcp 서버 클라이언트 구조)을 구현하는 활성 구성 요소를 작성하고 파일을 쓰거나 읽는 대신 변경 사항을 직접 전달합니다. 빠르고 유연하지만 다른 종속성과 가능한 실패 지점 (물론 일부 작업).
c) 다른 프로세스가 정기적으로 읽는 전용 신호 파일의 내용을 대체하여 신호 프로세스를 보장합니다. 그것은 폴링 프로 시저 인만큼 똑똑하지 않고 File.GetLastWriteTime을 호출하는 것보다 더 많은 오버 헤드가 있습니다. 너무 자주 너무 많은 곳에서 내용을 확인하지 않으면 작업을 수행합니다. 그것을 위해
/// <summary>
/// type to set signals or check for them using a central file
/// </summary>
public class FileSignal
{
/// <summary>
/// path to the central file for signal control
/// </summary>
public string FilePath { get; private set; }
/// <summary>
/// numbers of retries when not able to retrieve (exclusive) file access
/// </summary>
public int MaxCollisions { get; private set; }
/// <summary>
/// timespan to wait until next try
/// </summary>
public TimeSpan SleepOnCollisionInterval { get; private set; }
/// <summary>
/// Timestamp of the last signal
/// </summary>
public DateTime LastSignal { get; private set; }
/// <summary>
/// constructor
/// </summary>
/// <param name="filePath">path to the central file for signal control</param>
/// <param name="maxCollisions">numbers of retries when not able to retrieve (exclusive) file access</param>
/// <param name="sleepOnCollisionInterval">timespan to wait until next try </param>
public FileSignal(string filePath, int maxCollisions, TimeSpan sleepOnCollisionInterval)
{
FilePath = filePath;
MaxCollisions = maxCollisions;
SleepOnCollisionInterval = sleepOnCollisionInterval;
LastSignal = GetSignalTimeStamp();
}
/// <summary>
/// constructor using a default value of 50 ms for sleepOnCollisionInterval
/// </summary>
/// <param name="filePath">path to the central file for signal control</param>
/// <param name="maxCollisions">numbers of retries when not able to retrieve (exclusive) file access</param>
public FileSignal(string filePath, int maxCollisions): this (filePath, maxCollisions, TimeSpan.FromMilliseconds(50))
{
}
/// <summary>
/// constructor using a default value of 50 ms for sleepOnCollisionInterval and a default value of 10 for maxCollisions
/// </summary>
/// <param name="filePath">path to the central file for signal control</param>
public FileSignal(string filePath) : this(filePath, 10)
{
}
private Stream GetFileStream(FileAccess fileAccess)
{
var i = 0;
while (true)
{
try
{
return new FileStream(FilePath, FileMode.Create, fileAccess, FileShare.None);
}
catch (Exception e)
{
i++;
if (i >= MaxCollisions)
{
throw e;
}
Thread.Sleep(SleepOnCollisionInterval);
};
};
}
private DateTime GetSignalTimeStamp()
{
if (!File.Exists(FilePath))
{
return DateTime.MinValue;
}
using (var stream = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.None))
{
if(stream.Length == 0)
{
return DateTime.MinValue;
}
using (var reader = new BinaryReader(stream))
{
return DateTime.FromBinary(reader.ReadInt64());
};
}
}
/// <summary>
/// overwrites the existing central file and writes the current time into it.
/// </summary>
public void Signal()
{
LastSignal = DateTime.Now;
using (var stream = new FileStream(FilePath, FileMode.Create, FileAccess.Write, FileShare.None))
{
using (var writer = new BinaryWriter(stream))
{
writer.Write(LastSignal.ToBinary());
}
}
}
/// <summary>
/// returns true if the file signal has changed, otherwise false.
/// </summary>
public bool CheckIfSignalled()
{
var signal = GetSignalTimeStamp();
var signalTimestampChanged = LastSignal != signal;
LastSignal = signal;
return signalTimestampChanged;
}
}
일부 테스트 :
[TestMethod]
public void TestSignal()
{
var fileSignal = new FileSignal(Path.GetTempFileName());
var fileSignal2 = new FileSignal(fileSignal.FilePath);
Assert.IsFalse(fileSignal.CheckIfSignalled());
Assert.IsFalse(fileSignal2.CheckIfSignalled());
Assert.AreEqual(fileSignal.LastSignal, fileSignal2.LastSignal);
fileSignal.Signal();
Assert.IsFalse(fileSignal.CheckIfSignalled());
Assert.AreNotEqual(fileSignal.LastSignal, fileSignal2.LastSignal);
Assert.IsTrue(fileSignal2.CheckIfSignalled());
Assert.AreEqual(fileSignal.LastSignal, fileSignal2.LastSignal);
Assert.IsFalse(fileSignal2.CheckIfSignalled());
}
의
- 1. 마지막으로 수정 한 시간을 추적하는 방법
- 2. 마지막으로 수정 한 날짜/시간
- 3. python3 urllib을 사용하여 마지막으로 수정 한 시간을 얻으려면 어떻게해야합니까?
- 4. 마지막으로 재설정 한 시간을 iis에서 추적합니다.
- 5. Visual Studio에서 마지막으로 수정 한 날짜 추가
- 6. Linux에서 파일을 마지막으로 수정 한 UID를 결정 하시겠습니까?
- 7. SVN : 마지막으로 수정 한 이후에 만들어진 파일을 제거하는 방법이 있습니까?
- 8. 모든 파일을 열거하지 않고 마지막으로 수정 한 파일 얻기
- 9. 마지막으로 수정 한 날짜/FileInfo보기 ASP.NET MVC
- 10. 마지막으로 수정 한 헤더 IIS가 자동으로 추가됩니까?
- 11. 셰어 마지막으로 수정 한 날짜와 익명 액세스
- 12. 디렉토리가 마지막으로 수정 된 시간을 얻는 방법은 무엇입니까?
- 13. 응용 프로그램 풀이 마지막으로 재활용 된 시간을 확인하십시오.
- 14. tsql- 데이터베이스를 오프라인으로 전환 한 시간을 확인하십시오.
- 15. UNIX에서 사용자가 입력 한 날짜와 시간을 확인하십시오.
- 16. 파일을 드래그 한 애플릿을 확인하십시오.
- 17. 마지막으로 수정 된 SQL Server 행 날짜
- 18. Windows OS에서 Java OS로 파일을 변환합니다.
- 19. 한 사용자가 수정 한 모든 파일을 알려주시겠습니까?
- 20. 앱이 Android에서 마지막으로 사용한 이후 경과 한 시간을 확인 하시겠습니까?
- 21. powershell에서 추가 모듈없이 마지막으로 로그인 한 시간을 얻는 방법은 무엇입니까?
- 22. 항목이 마지막으로 클릭 한/목록보기와 동일한 지 확인하십시오.
- 23. NHibernate를 사용하여 마지막으로 수정 한 사람과 수정 한 사람을 설정하는 가장 좋은 방법은 무엇입니까?
- 24. http 헤더에서 마지막으로 수정 됨
- 25. 파일을 수정 한 후 ftp로 자동 전송
- 26. RSM 다이어그램에서 "마지막으로 수정 한"텍스트 필드를 자동화하는 방법은 무엇입니까?
- 27. Wordpress에 마지막으로 수정 한 HTTP 헤더를 삽입하는 방법은 무엇입니까?
- 28. IPhone - 웹 서버에서 마지막으로 수정 한 파일 가져 오기
- 29. Joomla에서 마지막으로 수정 한 헤더를 사용자 정의하는 방법은 무엇입니까?
- 30. Wordpress (데이터베이스); 마지막으로 수정 한 날짜를 표시 하시겠습니까?
가능한 중복 [C#에서 파일의 날짜를 수정하는 방법에] (http://stackoverflow.com/questions/1185378/how-to-get -c-sharp-file-in-c-sharp) – nawfal
위 링크의 문제는보다 구체적인 경우이지만 동의합니다. 여기에 허용 된 대답이 해당 질문에 언급되어 있습니다. – Candyfloss