我正在尝试将日志文件写入我的代码,但是我有一些限制,并且不知道如何超越它们。
我的代码运行几天,每1分钟循环一次。我想在每个循环的末尾写入日志文件,因此该日志文件将包含数千行。所以,我的两点要点是:
我试图像这样使用fseek函数:
fseek(fp,-1,SEEK_END);
但没有成功(我最终在已经存在的行上写了东西)。 重要的是要说我正在Linux中编写此代码,但希望它具有可移植性。
我在其他问题上发现的所有内容都表明人们正在阅读整行,而我不需要阅读或存储现有行。 我只是想打开文件并写换行。有人知道我该怎么做吗?
答案 0 :(得分:0)
以追加模式(class AlarmRingtoneManager(val context: Context) {
private lateinit var mediaPlayer: MediaPlayer
fun start() {
mediaPlayer = MediaPlayer.create(context, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM))
.apply {
setAudioAttributes(AudioAttributes.Builder()
.setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
.setLegacyStreamType(AudioManager.STREAM_ALARM)
.setUsage(AudioAttributes.USAGE_ALARM)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build())
isLooping = true
start()
}
}
fun stop() {
mediaPlayer.stop()
}
}
中的"a"
)打开文件。这样,所有写操作都将到达文件的末尾。无需搜索。
此外,重复打开/关闭同一文件没有任何意义。在循环开始之前,只需打开文件一次。保持文件打开并不妨碍其他人读取它。如果您担心由缓冲引起的延迟,则只需在输出的每一行之后fopen
处理即可。