php怎样将一个字符串写入txt文件 ,注意:前提是不能冲掉txt文件中的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php怎样将一个字符串写入txt文件 ,注意:前提是不能冲掉txt文件中的值相关的知识,希望对你有一定的参考价值。
php怎样将一个字符串写入txt文件 ,注意:前提是不能冲掉txt文件中的值。本人试过了fwrite()和file_put_contents()方法,能写入,但是会冲掉文件原本的值,怎样不冲掉文件中的值而继续写入?
参考技术A 写文件替换掉原来的内容是因为指针在打开文件的时候默认为在最前面你可以设置打开文件的模式,除了r
w模式还有a,这个模式下打开
文件指针
在结尾出,这样你就可以继续fwrite不会替换掉原来的文字,或者你也可以手动将指针先移动到最后面再写入,你可以查下feof()
ftell()
fseek()rewind()这几个函数的用处
使用 Node.js 将一行写入 .txt 文件
【中文标题】使用 Node.js 将一行写入 .txt 文件【英文标题】:Write a line into a .txt file with Node.js 【发布时间】:2016-01-29 20:42:51 【问题描述】:我想使用 Node.js 创建一个简单的日志记录系统,它将过去一行之前的一行打印到一个 .txt 文件中。但是,我不知道 Node.js 的文件系统功能是如何工作的。
谁能解释一下?
【问题讨论】:
那么,您想在文本文件的中间插入一行,对吗?将字符串附加到末尾会容易得多。 是的,好的,我怎样才能在末尾附加一个字符串? How to append to a file in Node?的可能重复 【参考方案1】:将数据插入文本文件的中间并不是一项简单的任务。如果可能,您应该将其附加到文件的末尾。
向一些文本文件附加数据的最简单方法是使用来自fs
module 的内置fs.appendFile(filename, data[, options], callback)
function:
var fs = require('fs')
fs.appendFile('log.txt', 'new data', function (err)
if (err)
// append failed
else
// done
)
但是如果你想多次将数据写入日志文件,那么最好使用fs.createWriteStream(path[, options])
function来代替:
var fs = require('fs')
var logger = fs.createWriteStream('log.txt',
flags: 'a' // 'a' means appending (old data will be preserved)
)
logger.write('some data') // append string to your file
logger.write('more data') // again
logger.write('and more') // again
每次您调用 .write
时,Node 都会将新数据追加到您的文件中,直到您的应用程序被关闭,或者直到您手动关闭调用 .end
的流:
logger.end() // close string
请注意,上面示例中的logger.write
不会写入新行。将数据写入新行:
var writeLine = (line) => logger.write(`\n$line`);
writeLine('Data written to a new line');
【讨论】:
需要保存文件吗?如果我使用 fs.appendFile,文件还是空的?appendFile
将打开文本文件,添加新数据,然后保存。所以,不,你不需要自己保存它。如果您的文件为空,请尝试在appendFile
回调中检查err
。
感谢您提及一次和多次选项。
write
换行了吗?
这个答案对我也很有帮助:***.com/a/61890003/12305715【参考方案2】:
我创建了一个日志文件,它使用“Winston”记录器将数据打印到文本文件中。源代码在下面,
const createLogger, format, transports = require('winston');
var fs = require('fs')
var logger = fs.createWriteStream('Data Log.txt',
flags: 'a'
)
const os = require('os');
var sleep = require('system-sleep');
var endOfLine = require('os').EOL;
var t = ' ';
var s = ' ';
var q = ' ';
var array1=[];
var array2=[];
var array3=[];
var array4=[];
array1[0] = 78;
array1[1] = 56;
array1[2] = 24;
array1[3] = 34;
for (var n=0;n<4;n++)
array2[n]=array1[n].toString();
for (var k=0;k<4;k++)
array3[k]=Buffer.from(' ');
for (var a=0;a<4;a++)
array4[a]=Buffer.from(array2[a]);
for (m=0;m<4;m++)
array4[m].copy(array3[m],0);
logger.write('Date'+q);
logger.write('Time'+(q+' '))
logger.write('Data 01'+t);
logger.write('Data 02'+t);
logger.write('Data 03'+t);
logger.write('Data 04'+t)
logger.write(endOfLine);
logger.write(endOfLine);
function mydata() //user defined function
logger.write(datechar+s);
logger.write(timechar+s);
for ( n = 0; n < 4; n++)
logger.write(array3[n]);
logger.write(endOfLine);
var now = new Date();
var dateFormat = require('dateformat');
var date = dateFormat(now,"isoDate");
var time = dateFormat(now, "h:MM:ss TT ");
var datechar = date.toString();
var timechar = time.toString();
mydata();
sleep(5*1000);
【讨论】:
【参考方案3】:第 1 步
如果你有一个小文件 将所有文件数据读入内存
第 2 步
将文件数据字符串转换为数组
第 3 步
搜索数组以找到要插入文本的位置
第 4 步
一旦你有了位置插入你的文字
yourArray.splice(index,0,"new added test");
第 5 步
将数组转换为字符串
yourArray.join("");
第 6 步
像这样写你的文件
fs.createWriteStream(yourArray);
如果您的文件太大,不建议这样做
【讨论】:
【参考方案4】:只需使用fs
模块和类似的东西:
fs.appendFile('server.log', 'string to append', function (err)
if (err) return console.log(err);
console.log('Appended!');
);
【讨论】:
以上是关于php怎样将一个字符串写入txt文件 ,注意:前提是不能冲掉txt文件中的值的主要内容,如果未能解决你的问题,请参考以下文章
php怎样将一个字符串写入txt文件 ,注意:前提是不能冲掉txt文件中的值