php如何将一个txt文件的内容追加到另一个txt文件里?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php如何将一个txt文件的内容追加到另一个txt文件里?相关的知识,希望对你有一定的参考价值。

rt

参考技术A 打开读取txt1 用追加的方式写进txt2就行了啊 参考技术B file_put_contents('2.txt', file_get_contents('1.txt'), FILE_APPEND);本回答被提问者采纳 参考技术C 'r'
只读方式打开,将文件指针指向文件头。

'r+'
读写方式打开,将文件指针指向文件头。

'w'
写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

'w+'
读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

'a'
写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

'a+'
读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

'x'
创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回
FALSE,并生成一条
E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的
open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 php 4.3.2
以及以后的版本所支持,仅能用于本地文件。

'x+'
创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回
FALSE,并生成一条
E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的
open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2
以及以后的版本所支持,仅能用于本地文件
一般fopen函数打开一个文件,打开方式如上。
如果是将一个txt文件的内容追加到另一个txt文件里(比如a.txt追加到b.txt里)
那就先取出a.txt的内容,然后用a或者a+方式打开b.txt,进行写入。

将文件的内容复制到另一个文件中相对于文件末尾的位置

【中文标题】将文件的内容复制到另一个文件中相对于文件末尾的位置【英文标题】:Copying the contents of a file into another file at a point relative to the end of the file 【发布时间】:2017-02-23 07:08:38 【问题描述】:

StackExchange 新手,如有错误请见谅。

我有一个输入文件,需要在最后一个字符之前复制到另一个文件中。

 

输入文件.txt:

input 
       "inputstuff"

filetowriteto.txt:

Stuff 
       foo 
            "foostuff"
       
       bar 
            "barstuff"
       

 

运行脚本后,生成的文件现在应该是:

filetowriteto.txt:

Stuff 
       foo 
            "foostuff"
       
       bar 
            "barstuff"
       
       input 
              "inputstuff"
       

 

基本上,该脚本复制input 行集并将它们粘贴到filetowriteto.txt 中最后一个右括号之前。

脚本不能依赖行数,因为 filetowriteto.txt 没有可预测的 foo 或 bar 行数,而且我不知道如何使用 sed 或 awk 来做到这一点。

【问题讨论】:

【参考方案1】:

试试:

$ awk 'FNR==NR if (NR>1) print last; last=$0; next print "       " $0 ENDprint last' filetowriteto.txt inputfile.txt 
Stuff 
       foo 
            "foostuff"
       
       bar 
            "barstuff"
       
       input 
              "inputstuff"
       

要更改文件:

awk 'FNR==NR if (NR>1) print last; last=$0; next print "       " $0 ENDprint last' filetowriteto.txt inputfile.txt >tmp && mv tmp filetowriteto.txt

工作原理

FNR==NR if (NR>1) print last; last=$0; next

在读取第一个文件时,(a)如果我们不在第一行,打印last的值,(b)将当前行的文本分配给last,(c)跳过其余命令并跳转到next 行。

这使用了一个常见的 awk 技巧。条件FNR==NR 仅在我们读取第一个文件时为真。这是因为,在 awk 中,NR 是我们到目前为止读取的行数,而 FNR 是我们从当前文件读取的行数。因此,FNR==NR 仅在我们从第一个文件中读取时才为真。

print " " $0

在读取第二个文件时,用一些前导空格打印每一行。

ENDprint last

我们打印完第二个文件后,打印第一个文件的最后一行。

【讨论】:

【参考方案2】:

给定:

$ cat /tmp/f1.txt
input 
       "inputstuff"

$ cat /tmp/f2.txt
Stuff 
       foo 
            "foostuff"
       
       bar 
            "barstuff"
       

您可以使用command grouping 来实现:

$ ( sed '$d' f2.txt ; cat f1.txt ; tail -n1 f2.txt ) 

或(此版本不创建子shell)

$  sed '$d' f2.txt ; cat f1.txt ; tail -n1 f2.txt;  

它是如何工作的?

    sed '$d' f2.txt 打印除 f2.txt 的最后一行以外的所有内容

    cat f1.txt 在该点打印 f1.txt

    tail -n1 f2.txt现在打印f2的最后一行

如果要缩进 f1.txt,请使用 sed 而不是 cat。也可以使用 sed 打印最后一行:

$  sed '$d' /tmp/f2.txt ; sed 's/^/       /' /tmp/f1.txt ; sed -n '$p' /tmp/f2.txt;   
Stuff 
       foo 
            "foostuff"
       
       bar 
            "barstuff"
       
       input 
              "inputstuff"
       

然后,如果您愿意,可以使用> 重定向将分组的输出重定向到文件。

【讨论】:

【参考方案3】:
$ cat tst.awk
NR==FNR 
    rec = (NR>1 ? rec ORS : "") $0
    next

FNR>1 
    print prev
    if ( sub(/[^[:space:]].*/,"",prev) ) 
        indent = prev
    

 prev=$0 
END 
    gsub(ORS,ORS indent,rec)
    print indent rec ORS prev


$ awk -f tst.awk inputfile.txt filetowriteto.txt
Stuff 
       foo 
            "foostuff"
       
       bar 
            "barstuff"
       
       input 
              "inputstuff"
       

上面使用要修改的文件最后一行之前的最后一个非空行的缩进来设置它正在插入的新文件的缩进。

【讨论】:

以上是关于php如何将一个txt文件的内容追加到另一个txt文件里?的主要内容,如果未能解决你的问题,请参考以下文章

linux中怎么将文件合并

linux 使用笔记6

linux 自己文件的内容追加在自己文件中

php怎样将一个字符串写入txt文件 ,注意:前提是不能冲掉txt文件中的值

Linux-重定向追加

java代码 如何向TXT文件写入内容?