파일 연산을 위한 상수
가장 많이 사용되는 상수는 다음과 같습니다. 파일 디렉터리의 구분 기호인 상수입니다.
형식을 살펴보겠습니다.
平台 | 分割符 |
---|---|
windows | |
类unix | / |
Windows의 경로 형식은 d:xxxxxx입니다. 참고: Windows는 d:/xxx/xxx를 지원합니다.
Linux의 경로 형식은 /home/xxx/xxx입니다. 참고: Linux에서 homexxxxxx가 잘못된 경우
그러면 이스케이프 등을 활성화하면 이스케이프 문자를 함께 사용하면 d:xxxxxx가 동일해집니다. 판단할 때 2개가 있는데 하나로 변환한 후 /를 바꿔서 경로를 분할하면 Linux나 Windows에서 경로가 통일된 상태를 유지할 수 있습니다.
상수를 사용합니다:
DIRECTORY_SEPARATOR
현재 파일의 경로를 정의하는 간단한 예를 작성해 보겠습니다.
FILE은 PHP의 미리 정의된 상수이므로 변경할 방법이 없습니다. 필요한 경우 FILE도 운영 체제에 맞게 조정할 수 있습니다.
그러면 FILE을 사용하지 마세요. 사용자 정의 상수를 사용하고 다음과 같이 FILE을 처리할 수 있습니다.
<?php $_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__); define('__CUR_FILE__', $_current_file); echo __CUR_FILE__; ?>
파일 포인터 작업 기능
rewind(리소스 핸들)
기능: 포인터가 처음으로 돌아갑니다
fseek(리소스 핸들) , int offset [, int from_where])
함수: 파일 포인터를 지정된 문자만큼 뒤로 이동합니다
이전 읽기에서 fread가 지정된 길이의 데이터를 읽는다는 것을 알았습니다. 지정된 길이의 내용을 읽습니다. 다음에 읽을 때에는 원래 위치부터 다시 읽습니다.
위 그림과 같이 상상해 볼 수 있습니다.
1. 파일을 처음 열면 빨간색 아이콘이 읽혀집니다
2. 파일의 가색상을 A부터 C까지 읽어옵니다
3. 다음에 파일을 열면 C의 녹색 화살표부터 읽기 시작할 수 있습니다.
demo.txt 파일에 파일 배치를 작성합니다:
abcdeefghijklk
opqrst
uvwxyz
12345678
한 번 실험을 시작해 보겠습니다.
<?php $fp = fopen('demo2.txt', 'r+'); //读取10个字符 echo fread($fp,10); //指针设置回到开始处 rewind($fp); //再读取10次看看输出的是什么 echo '<br>'; echo fread($fp,10); echo '<br>'; //文件指针向后移动10个字符 echo fseek($fp,10); echo '<br>'; //再看看文件中输出的是什么 echo fread($fp,10); echo '<br>'; fclose($fp); ?>
위의 예에서 fseek는 지정된 길이만큼 바이트를 이동하는 것을 볼 수 있습니다. 그리고 되감기는 매번 파일의 시작 부분으로 돌아갑니다.
끝까지 나아가는 방법은? 바이트 수를 셀 수 있습니다. fseek 중에 바로 뒤로 이동합니다.
파일 크기 통계 바이트에 대해 이야기해 보겠습니다.
filesize는 파일 크기를 감지합니다
<?php $filename = 'demo.txt'; echo $filename . '文件大小为: ' . filesize($filename) . ' bytes'; ?>
파일 운영을 위한 기타 기능
사실 다른 기능도 있습니다 파일 운영, 파일 읽기 기능
函数名 | 功能 |
---|---|
file | 把整个文件读入一个数组中 |
fgets | 从文件指针中读取一行,读到最后返回false |
fgetc | 从文件指针中读取一个字符,读到最后返回false |
ftruncate | 将文件截断到给定的长度 |
위의 모든 기능을 사용하기 위해 예제를 사용합니다.
demo.txt 파일에 파일 배치를 작성합니다:
abcdeefghijklk
opqrst
uvwxyz
12345678
<?php //以增加的r模式打开 $fp = fopen('demo.txt','r+'); //你分发现每次只读一个字符 echo fgetc($fp); //我要全部读取可以,读取一次将结果赋值一次给$string while($string = fgetc($fp)){ echo $string; } ?>
fgets는 한 번에 한 줄씩 엽니다:
<?php //以增加的r模式打开 $fp = fopen('demo.txt','r+'); //你分发现每次只读一个字符 echo fgets($fp); echo fgets($fp); echo fgets($fp); echo fgets($fp); ?>
위 코드를 사용하면 읽을 때마다 한 번에 한 줄씩 열리는 것을 알 수 있습니다. 최종 읽기 반환이 거짓입니다.
다음으로 파일 가로채기 기능을 살펴보겠습니다.
<?php //打开我们上面的demo.txt文件 $file = fopen("demo.txt", "a+"); //你可以数数20个字有多长,看看是不是达到效果了 echo ftruncate($file,20); fclose($file); ?>
위의 예에서는 가로채기만 하면 콘텐츠가 표시될 수 있음을 발견했습니다.
파일의 시간 함수
函数 | 功能说明 |
---|---|
filectime | 文件创建时间 |
filemtime | 文件修改时间 |
fileatime | 文件上次访问时间 |
<?php $filename = 'demo.txt'; if (file_exists($filename)) { echo '$filename文件的上次访问时间是:' . date("Y-m-d H:i:s", fileatime($filename)); echo '$filename文件的创建时间是: ' . date("Y-m-d H:i:s", filectime($filename)); echo '$filename文件的修改时间是: ' . date("Y-m-d H:i:s", filemtime($filename));} ?>