1
import System.Directory
import qualified Data.ByteString as BS  
import qualified Data.ByteString.UTF8 as BS_UTF8

main = do
    putStrLn "Input path to some file: "
    raw_inputed_path <- BS.getLine
    let inputed_path = BS_UTF8.toString raw_inputed_path
    such_file_exists <- doesFileExist inputed_path
    such_directory_exists <- doesDirectoryExist inputed_path
    if such_file_exists 
        then putStrLn "Yeah, I see it!"
        else if such_directory_exists
            then putStrLn "Aha, I see it, but it's a directory!"
            else putStrLn "Hmm... No such..."

このコードは、ASCII パスのみで完全に機能します。しかし、ASCII 以外の記号を含むパスを使用するdoesFileExistと、doesDirectoryExist常にFalse. なんで?

  • Debian GNU/Linux 6.0 x86_64
  • ghc 6.12.1
4

1 に答える 1

2

GHC 7.x シリーズへのアップグレード - 6.12 は 3 年近く前のものです。この動作は約 1 年前に修正されました。

于 2012-04-26T11:42:53.493 に答える