fgets为输出文件添加了一个额外的行?

时间:2012-02-26 22:21:09

标签: php fwrite fgets

下面的代码输出格式正确的文本文件。但它还在文本文件的末尾添加了一个额外的字符 - 我假设一个\ r或\ n字符。我试过sed'$ d'但这不起作用。当我在编辑器中打开输出文件(load_data_infile.txt)时,我将光标定位在文件的最后写入行之后,它表示我在“15 of 14”行,这是奇怪的。如何在14行文件中包含15行?

我的问题是这些:1)是什么导致了“15 of 14”和2)如何防止它被写入或删除它?

谢谢!

    <?php

$file_write_output = fopen("load_data_infile.txt", "w") or die ("can't open load_data_infile.txt for writing");
$file_read_input = fopen("http://file.txt", "r") or die ("can't open file");

//perform the loop through the file - read the input file line by line with fgets function

while (!feof($file_read_input) ) {

$input = fgets($file_read_input);


echo "$input";

fwrite($file_write_output,$input);

}

fclose($file_write_output);

fclose($file_read_input);

?>

<?php

//strip out the header of load_data_infile.txt file


exec("sed -i '1d' load_data_infile.txt");


?>

2 个答案:

答案 0 :(得分:0)

试试这个:

$content = file_get_contents('http://file.txt');

if ($file !== false) {
    return $file;
}

if ( file_put_contents('load_data_infile.txt', $content, LOCK_EX) ) {
    // Success
}

PHP文档: PHP file_get_contentsPHP file_put_contents

答案 1 :(得分:0)

以下代码正常运作!

<?php
    $raw_data = file_get_contents('http://file.txt');
    $trimmed_raw_data=trim($raw_data);
    echo $trimmed_raw_data;
    if (file_put_contents('load_data_infile.txt', $trimmed_raw_data, LOCK_EX) ) 
?>