2011-02-09 27 views

Trả lời

39

Dưới đây là một cách để chỉ đổ nếu nó đã tồn tại và điều đó không có vấn đề của việc sử dụng file_exists, như các tập tin có thể chấm dứt tồn tại giữa cuộc gọi file_exists và cuộc gọi fopen.

$f = @fopen("filename.txt", "r+"); 
if ($f !== false) { 
    ftruncate($f, 0); 
    fclose($f); 
} 
+0

Trông giống như một cách tiếp cận khá mạnh mẽ :) – riha

+0

Tại sao downvote? – Artefacto

+0

@Col. Còn nó thì sao? Nó là cần thiết để làm cho thông báo fopen miễn phí. – Artefacto

1

Đầu tiên hãy xóa nó bằng cách sử dụng unlink() và sau đó chỉ cần tạo tệp trống mới có cùng tên.

13
$fh = fopen('filename.txt','w'); // Open and truncate the file 
fclose($fh); 

Hoặc trong một dòng và không có lưu trữ (tạm thời) tập tin xử lý:

fclose(fopen('filename.txt','w')); 

Như những người khác đã nói, điều này tạo ra các tập tin trong trường hợp nó không tồn tại.

+8

fclose (fopen ('filename.txt', 'w')); – ekerner

12

Viết một chuỗi rỗng như nội dung của filename.txt:

file_put_contents('filename.txt', ''); 
+0

Như đã nêu trên tài liệu php, điều này giống như fopen, fwrite và fclose. Vì fwrite không được yêu cầu, điều này có thể chậm hơn một chút so với fopen/fclose. – riha

+0

Điều cần biết, tôi đã upvoted câu trả lời của bạn –

2

Chỉ cần mở nó để viết:

if (file_exists($path)) {  // Make sure we don't create the file 
    $fp = fopen($path, 'w'); // Sets the file size to zero bytes 
    fclose($fp); 
} 
0

Với ftruncate(): http://php.net/ftruncate

+0

Đối với 'ftruncate()', bạn phải 'fopen()' trước tiên. Nếu bạn 'fopen()' để viết, tập tin đã bị cắt ngắn thành 0 byte. –

+0

@ Ferdinand phụ thuộc vào cách bạn mở nó. – Artefacto

+0

@Artefacto nói chung - vâng. trong trường hợp cụ thể này - nó đã bị cắt ngắn rồi. Bình luận của bạn không có ý nghĩa và chỉ gây phiền nhiễu nitpicking. –

-1

bạn có thể sử dụng đoạn mã sau

'

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$stringData = ""; 
fwrite($fh, $stringData); 
fclose($fh); 

' Nó sẽ chỉ ghi đè nội dung tệp của bạn vào các ô trống

Các vấn đề liên quan