Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
openFile-权限被拒绝-读取和写入同一文件时_File_Haskell_Io_Lazy Evaluation - Fatal编程技术网

openFile-权限被拒绝-读取和写入同一文件时

openFile-权限被拒绝-读取和写入同一文件时,file,haskell,io,lazy-evaluation,File,Haskell,Io,Lazy Evaluation,我尝试将某些内容写入文件时出现错误“openFile-权限被拒绝”: saveFile content path = do writeFile path (show content) 为什么?从您的问题来看,您似乎在同一个文件上使用System.IO中的readFile和writeFile 请记住,它是惰性的,这意味着文件句柄最初是打开的,然后当程序需要数据时,将读取片段。只有在读取了所有数据或删除了对文件的所有引用后,才会关闭文件句柄。在此之前,资源将被锁定 在尝试写入文件之

我尝试将某些内容写入文件时出现错误“openFile-权限被拒绝”:

saveFile content path = do
        writeFile path (show content)

为什么?

从您的问题来看,您似乎在同一个文件上使用
System.IO
中的
readFile
writeFile

请记住,它是惰性的,这意味着文件句柄最初是打开的,然后当程序需要数据时,将读取片段。只有在读取了所有数据或删除了对文件的所有引用后,才会关闭文件句柄。在此之前,资源将被锁定

在尝试写入文件之前,您需要确保该文件已被完全读取,或者以某种方式关闭该文件。实现这一点的一个简单方法是使用严格的IO。例如:

loadFileStrict :: Read a => FilePath -> IO a
loadFileStrict f = do
    s <- readFile f
    length s `seq` return s
loadFileStrict::Read a=>FilePath->IO a
loadFileStrict f=do

让我们检查一下你的
路径
,你可能真的没有权限。我完全控制了这个文件:/o你的操作系统似乎不这么认为。您以前是否使用
readFile
打开此文件?如果是这样,请尝试关闭句柄,然后用
writeFile
再次打开它。是-我有:loadFile path=do x