level 8
旋转的刀
楼主
用 FileAccess.WRITE 模式开文件就不会追加写入,不管有没有 seek_end ,不管是用 store_string 写入还是用 store_line写入。
换成 FileAccess.READ_WRITE 模式打开文件就没问题,但是 FileAccess.READ_WRITE 又存在一个问题,在文件不存在时又不会自动创建,返回错误码是7(文件不存在),可是文档上明明写的会自动创建,简直吐血了。
各位兄弟们有没有遇到同样的情况呢?我现在用了一段极丑陋代码来解决的,太难看了。
# 这里有BUG,用 FileAccess.WRITE 模式开文件就不会追加写入,用 FileAccess.READ_WRITE 就没问题,但是 FileAccess.READ_WRITE 在文件不存在时又不会创建,吐血了
var file = FileAccess.open(log_file_path, FileAccess.READ_WRITE)
if not file:
printerr(FileAccess.get_open_error())
printerr("用读_写模式开日志文件失败,可能是日志文件不存在.")
file = FileAccess.open(log_file_path, FileAccess.WRITE) # 尝试用 FileAccess.WRITE 模式打开一次,创建文件
if not file:
printerr("用只写模式打开日志文件也失败.")
return
else: # 如果打开成功了,就把文件关掉,再用读写模式打开一次,以便可以追加写入
file.close()
file = FileAccess.open(log_file_path, FileAccess.READ_WRITE)
if not file:
printerr("再次尝试用读_写模式开日志文件失败.")
return
file.seek_end()
file.store_string(log_entry)
file.flush()
2025年01月28日 21点01分
1
换成 FileAccess.READ_WRITE 模式打开文件就没问题,但是 FileAccess.READ_WRITE 又存在一个问题,在文件不存在时又不会自动创建,返回错误码是7(文件不存在),可是文档上明明写的会自动创建,简直吐血了。
各位兄弟们有没有遇到同样的情况呢?我现在用了一段极丑陋代码来解决的,太难看了。
# 这里有BUG,用 FileAccess.WRITE 模式开文件就不会追加写入,用 FileAccess.READ_WRITE 就没问题,但是 FileAccess.READ_WRITE 在文件不存在时又不会创建,吐血了
var file = FileAccess.open(log_file_path, FileAccess.READ_WRITE)
if not file:
printerr(FileAccess.get_open_error())
printerr("用读_写模式开日志文件失败,可能是日志文件不存在.")
file = FileAccess.open(log_file_path, FileAccess.WRITE) # 尝试用 FileAccess.WRITE 模式打开一次,创建文件
if not file:
printerr("用只写模式打开日志文件也失败.")
return
else: # 如果打开成功了,就把文件关掉,再用读写模式打开一次,以便可以追加写入
file.close()
file = FileAccess.open(log_file_path, FileAccess.READ_WRITE)
if not file:
printerr("再次尝试用读_写模式开日志文件失败.")
return
file.seek_end()
file.store_string(log_entry)
file.flush()