为什么我不能写文件?

时间:2019-03-11 14:49:48

标签: file haskell io

我正在尝试创建一个csv文件用于测试,当我尝试编写该文件时,该文件会继续在0kb1kb处波动,并且仅写入1条记录。这样的波动持续一段时间,直到我得到

  

openfile:权限被拒绝

module Generator where 

    path="d:\\data.csv"
    cnt=1000000
    main::IO()
    main=do
        let payload=makeString
        writeToFile path cnt payload


    makeString::String
    makeString="0741142339,\r\n"

    writeToFile::String->Int->String->IO()
    writeToFile _ 0 _ =return ()
    writeToFile path cnt payload=writeFile path payload >> writeToFile path (cnt-1)  payload

如果我尝试写到C://上的某个位置,则会获得不允许的权限。

1 个答案:

答案 0 :(得分:5)

每次调用writeFile都会用下一条记录覆盖现有文件。

您想要做的是任一

  • 打开文件(openFile),将每一行写入文件句柄(hPutStrLn),最后关闭文件(hClose)。
  • 生成一个代表整个文件内容的巨型字符串,并在末尾writeFile