2013-07-20 2 views
3

애플리케이션의 경우 Chrome의 캐시 파일을 읽으려고합니다. 문제는 Chrome이 실행 중일 때 파일이 열리고 해당 프로세스에 의해 업데이트 될 수 있다는 것입니다.다른 프로세스에서 사용중인 파일에서 읽기

그래서

data_1 = open("C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Cache\data_1")

을 시도 할 때 그것은 나에게

IOError: [Errno 13] Permission denied: 'C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cache\\data_1'

했다.

Permission denied (EDIT : 파일에 대한 전체 제어 권한이 있음) 이후 상승 된 cmd 창에서도 시도했습니다. 같은 일이 일어난다. Chrome이 실행 중이 아닌 경우에도 정상적으로 작동합니다. 나는 this (FileShare on .net)과 같은 것을 원한다.

this 응용 프로그램에서 Chrome을 공유 읽기 액세스가 허용되어 있기 때문에 사용하고 계신 것으로 보입니다.

편집 :

나는 내가 틀렸다 생각합니다. lulyon은 Chrome이 파일을 잠그고 있다고 말했습니다. 내가 좋아하는 vb.net에 그것을 시도하기 때문에 :

Dim d As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read) 

는 말한다 :

The process cannot access the file because it is being used by another process.

가 처음에 나는 다른 위치에 ChromeCacheView 복사에게 파일을 생각했다. 그래서 프로세스 모니터를 사용하여 좀 더 자세히 살펴 보았습니다. 이 스크린 샷을 확인하십시오. 두 응용 프로그램이 같은 파일을 공유하고 있다는 것을 의미하지 않습니까? 내가 ChromeCacheView로 두 사이에 이해가있을 거라고 생각하지 않습니다

Process monitor: Chrome and ChromeCacheView

타사 응용 프로그램입니다. 그러면 어떻게 가능할까요?

답변

1

크롬이 사용중인 캐시 파일에 쓰기를 방해 할 가능성이 있습니다. 캐시 파일의 복사본을 만들고 (cp 명령과 같은 도구를 사용하여) 복사하고 I/O를 복제본과 함께 수행하십시오.

가능한 설명은 크롬이 읽기, 쓰기 및 액세스 권한을 부여 할 때 읽기 권한이있는 파일을 열면 장면 뒤에서 찾기 작업으로 바이트를 읽는 것이 자신의 읽기 내용을 엉망으로 만들므로 거부됩니다. OS별로

os.stat (filepath) .st_mode를 사용하여 기본 읽기 액세스 권한으로 함수를 열기 전에 읽기 권한을 확인하십시오. 읽기 권한이 있는지 확인하십시오.

읽기 권한이 없음이 확인 된 경우에만 Chrome에서 캐시 파일에 대한 액세스를 차단하는 이유를 알아낼 수는 있지만 ChromeCacheView의 액세스는 차단할 수 있습니다.

+0

하지만 쓰기 권한이 필요하지 않습니다. Chrome에서 읽기 액세스가 금지되는 경우 ChromeCacheView와 같은 앱이 어떻게 작동합니까? – rahul

+0

@rahul 따라서 "Permission denied"이 무엇을 의미하는지 파악해야합니다. 나중에 답장을 보내십시오. – lulyon

+0

@rahul 현재 사용자가 캐시 파일이있는 폴더에 대한 액세스 권한이 없거나 캐시 파일을 현재 사용자가 읽을 수 없기 때문입니까? 확인해 봐. – lulyon

관련 문제