2014-04-23 7 views
2

수정 날짜와 시간을 변경하고 싶습니다."dart : io"를 사용하여 파일 날짜 속성 (최소한 수정 날짜)을 변경하는 방법은 무엇입니까?

어떻게 다트 플랫폼에서이 작업을 수행 할 수 있습니까?

.NET Framework, C# 언어의 예제입니다.

File.SetLastWriteTime(path, DateTime.Now); 

나는 가능할 것으로 확신합니다.

나는 다트와 같은 훌륭한 플랫폼에서 표준 방식으로이를 수행하는 방법을 알지 못합니다.

그것은 다트

+2

아를 참조 할 것 창에 체인 사람들의 동등한 코드입니다. 끔찍한 실패. 다트가 아직 그런 중요한 기능을 추가하지 않았다는 것에 놀랐습니다. 특히 Java를 추가하는 데만 15 년이 걸렸습니다. – ronag

+2

mezoni : 글쎄, 닷넷은 플랫폼 독립적 인 .NET과는 비교가 안된다. 하나는 약간의 관점에서 물건을 넣어야한다. – ronag

+1

이 기능은 코너 경우에 유용하지만, 업무 대 가치 측면에서 ROI는 매우 낮습니다. 다트 팀이 할 일이 많으면 (ROI가 높은) 이러한 기능에 시간을 할애하면 개인적으로 놀랄 것입니다. – ronag

답변

2

단지 Process를 사용하여 touch를 호출하는 것입니다 마음에 오는 첫 번째 방법은 불가능하다.

예 :

import 'dart:io'; 

Future touchFile(File f) { 
    return Process.run("touch", [f.path]); 
} 

void main() { 
    var f = new File('example'); 
    print(f.statSync().changed); 
    touchFile(f).then((_) { 
    print(f.statSync().changed); 
    }); 
} 

Future touchFile(File f) { 
    return Process.run("copy", ["\b", f.path, "+,,"]); 
} 

예, this question

+0

Windows에서이 기능은 현재 폴더의 "소스"(여기서는 "f.path")가있는 경우에만 작동합니다. 즉 "copy foo + ,,"는 작동하지만 "copy foo/baz + ,,"는 작동하지 않습니다. Windows에서 더 복잡한 처리기가 필요합니다. 고마워, 당신의 충고에 대해서는 이미 알고 있습니다. – mezoni

+0

그래서 windows는 파일의 마지막 변경 날짜를 업데이트하는 표준 방법을 지원하지 않습니다? 나는 왜 당신이 다트가 그렇게 할 것으로 기대하는지 모르겠다 ... – ovangle

+0

더 복잡한 핸들러를 작성해야한다고하더라도 (나는 잘 모르겠다. 나는 몇 년 동안 창문으로 일하지 않았다), 여전히 가능하다. 다트에. 'Platform.operatingSystem'을 켜면 플랫폼 독립적 인 방법으로 구현할 수도 있습니다. – ovangle