首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测方案中是否可以打开文件

检测方案中是否可以打开文件
EN

Stack Overflow用户
提问于 2021-04-09 21:34:30
回答 1查看 207关注 0票数 0

我目前正在进行一个项目,在那里,我正在逐行阅读文件中的内容。在进行此操作之前,我想检查文件是否可以打开或是否存在。类似于在C++中检查fopen()的返回内容,但在Scheme中。

到目前为止,我已经:

代码语言:javascript
复制
(define (perform action fileName . args) 
    (if (file-exists? fileName)
        ((define in-file (open-input-file fileName))
        (do ((line (read-line in-file) (read-line in-file))) ((eof-object? line))
            (display line)
            (newline)))

        (map display
            (list "Unable to open " fileName " for reading\n"))
    ) 
)

但是,所有这些代码都会在文件中逐行读取,并尝试检查文件是否存在。但是,它不起作用,因为我得到了一个“;无法在空语法环境中绑定名称:文件中的#保留名称-条目13”错误。

我意识到当文件无法打开时,一个类型的错误-类型-类型:文件操作-错误将按照MIT计划文档发出信号;然而,我无法弄清楚如何处理这个异常,因此我的解决办法。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-18 19:27:05

你的代码有一个问题。不能在代码中随机添加括号来为if生成单个表达式,因为括号是函数调用。要生成单个表达式,需要使用begin:

代码语言:javascript
复制
(define (perform action fileName . args) 
    (if (file-exists? fileName)
        (begin
          (define in-file (open-input-file fileName))
          (do ((line (read-line in-file) (read-line in-file))) ((eof-object? line))
              (display line)
              (newline)))
        (map display
            (list "Unable to open " fileName " for reading\n"))
    )
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67028568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档