2014-04-09 6 views
0

파일 크기가 알면 filesize($file_path) 크기는 A bytes이됩니다.파일이 변경되지 않은 경우 파일을 저장할 때 파일 크기가 증가합니다.

파일을 열고 내용을 textarea에 출력하십시오. 변경하지 않고, 저장 :

당신이 다음 크기 B bytes있을 것이다 파일 크기 기능 filesize($file_path)에서 다시 파일을

$save_file = fopen($file_path, 'w'); 
if ($save_file) 
{ 
    // Write new data to a file 
    $do_write = fwrite ($save_file, stripslashes ($_POST['file'])); 

    if ($do_write) 
    { 
    $message = "Success"; 
    } 
    else 
    { 
    $message = "Error"; 
    } 
} 
else 
{ 
    $message = "Error"; 
} 

봐를 열면. 여기서 A < B.

문제점 : 파일 자체와 내용이 변경되지 않은 경우 왜 파일 크기를 얻습니까?

+0

공백, 새로운 행 - 수 있습니다. 파일에서 뭔가가 변경되지 않으면 파일 크기가 변경되지 않습니다. – Prisoner

답변

0

'w' 권한이있는 파일에 쓰기 권한이 이미있는 경우 파일에 추가됩니다. 또한 파일 이름의 길이는 파일이 사용하는 바이트 수에 영향을 미친다는 것을 명심하십시오.

예를 들어 file.extfile.ext.bak으로 백업하면 file.ext.bak은 3 바이트 길어집니다.

+0

"a"권한 (파일의 끝에 새 내용을 쓰는)으로 "w"권한 (쓰기 전에 파일을 비우는 권한)을 혼동하는 것입니다. –

0

파일에 공백을 추가하고 알 수없는 경우 일 수 있습니다. git로 변경 내용을 추적하고 변경 사항을 확인합니다. do a diff in shell 수 있습니다. a 파일 크기를 확인하지 않고 파일이 변경되었는지 확인하는 좋은 방법은 해시하는 것입니다. 다음은 사용자가 수행하는 작업입니다.

$hash = hash_file('md5', '/internal/path/to/file.txt'); 

// Code to store hash code in database/file. 

그런 다음 변경된 사항이 동일한 지 확인하고 저장된 해시와 비교하십시오. 파일의 메타 데이터 (이름, 확장자, 사용 권한)가 파일 크기를 변경하고 파일 내용을 변경하지 않을 수 있으므로 파일 크기보다 안정적입니다.