如果文件为空,程序应写"File Empty"
;否则,它应该写"File Full"
。这是我到目前为止所做的:
fname = "fileTest.txt"
somefile = File.open(fname, "w")
if File.readlines(somefile).grep(/monitor/).size == 0
somefile.write("File Empty")
else
somefile.write("File Full.")
end
somefile.close
第一次运行时,fileText.txt
为空,因此程序会写"File Empty"
。当我第二次运行它时,程序应该写"File Full"
,但文件仍然是"File Empty"
。
if
语句应检查文件是否为空,但我不能正常工作。我做错了什么?
编辑 - 解决问题:
fname = "fileTest.txt" somefile = File.open(fname, "a") if File.zero?(somefile) somefile.write("File Empty") else somefile.write("File Full.") end somefile.close
答案 0 :(得分:4)
" w" va_list
中的选项会截断文件(如果该文件存在)或创建新文件(如果该文件不存在) - 在此模式下它将始终为空。有关选项,请参阅here。
SELECT
*
FROM
(
SELECT
Instance=ROW_NUMBER() OVER (PARTITION BY PersonName),
PersonID=CASE WHEN d.PersonName IS NULL THEN 'XXXX' ELSE p.PersonID END,
d.Fields
FROM
Person p
LEFT OUTER JOIN Details d on d.PersonName=p.PersonName
)AS X
WHERE
Instance=1
不需要文件对象,字符串(" path / to / filename.txt"),或者在这种情况下File.open(fname,"w")
也可以。
答案 1 :(得分:3)
您的代码与您的问题不符。
你说:
程序应该写"文件空"如果文件是空的;除此以外, 它应该写" File Full"
但你的代码说:
if File.readlines(somefile).grep(/monitor/).size == 0
somefile.write("File Empty")
else
somefile.write("File Full.")
end
您正在寻找与monitor
匹配的RE,如果您找不到它,那么您的代码就会写入" File Empty"。
"文件为空"不包含"监视",所以当程序第二次运行时,它再次报告"文件为空"
如果您确实在尝试解决我引用的问题,那么您可以使用File.zero?("filename")
作为快速简便的解决方案。