LISP:如何从一个文件中读取内容并将其写入另一个文件中?

2023-12-31

我想编写一个函数,该函数以两个文件的名称作为参数,并将内容从第一个文件复制到第二个文件。

到目前为止,我编写了一个从文件读取的函数:

(defun readFile (name)
 (let ((in (open name)))
  (format t "~a~%" (read-line in))
   (close in)))

还有一个将字符串写入文件的函数:

(defun writeFile (name content)
(with-open-file (stream name
    :direction :output
    :if-exists :overwrite
    :if-does-not-exist :create)
(format stream content)))

按照 Savantes 的指示,我再次编写了该函数,如下所示:

(defun read-write-to-file (input-file output-file)
(WITH-OPEN-FILE (output-stream output-file
         :direction :output
         :if-exists :new-version
         :if-does-not-exist :create)
  (WITH-OPEN-FILE (input-stream input-file
                 :direction :input)
        (FORMAT output-stream "~a" (READ input-stream nil 'eof))
)))

现在唯一的问题是它没有读取整个文件。


Common Lisp 食谱实际上包含了您问题的答案:

http://cl-cookbook.sourceforge.net/io.html http://cl-cookbook.sourceforge.net/io.html

请参阅该页面底部的“批量 I/O”部分。

经过较小的更正和修改,代码将如下所示:

(defun my-copy-file (from-file to-file)
  (with-open-file (input-stream from-file
                :direction :input
                :element-type '(unsigned-byte 8))
    (with-open-file (output-stream to-file
                   :direction :output
                   :if-exists :supersede
                   :if-does-not-exist :create
                   :element-type '(unsigned-byte 8))
      (let ((buf (make-array 4096 :element-type (stream-element-type input-stream))))
    (loop for pos = (read-sequence buf input-stream)
       while (plusp pos)
       do (write-sequence buf output-stream :end pos))))))

这应该能够处理文本文件和二进制文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LISP:如何从一个文件中读取内容并将其写入另一个文件中? 的相关文章

随机推荐

  • 如何访问 Android 的默认蜂鸣声?

    我想让一个按钮发出蜂鸣声来表明它已被按下 我想知道如何使用默认的 Android 蜂鸣声 例如调整铃声音量时 而不是导入我自己的 mp3 音乐文件或使用 ToneGenerator 使用默认的 android 蜂鸣声 就像当你调整 铃声音量
  • 双重爆炸数组

    字符串 user hello user2 world 期望的输出 string array 1 gt array 1 gt user 2 gt hello 2 gt array 1 gt user2 2 gt world 我尝试过的 不起作
  • Java 类路径问题

    我有两节课 我的应用程序 Library 该库已被编译为Library class 并且源代码不再可用 我现在正在尝试从源代码编译 MyApplication MyApplication 依赖于库 该库的包名称为 org myCompany
  • 分析来自谷歌文档表单的多重响应字段

    我用 Google Doc 制作的一份调查问卷有一个多重响应集 假设三个可能的问题是 foo bar foobar 允许人们勾选一个或多个答案 在我的谷歌电子表格结果中 我有 answer1 foo answer2 foo bar answ
  • @font-face 用于自定义字体,Chrome 中的字体不平滑

    我有一个 Web 应用程序 它使用 CSS3 的 font face 来嵌入自定义字体 到目前为止 这在 IE 和 Firefox 中都可以完美运行 然而 在 Chrome 中 自定义字体显得像素化且不平滑 下面是 Firefox IE 上
  • IE8 将动态 iframe 内容从缓存重新加载到错误的 iframe 中

    我有一个页面 上面有多个 iframe 每个 iframe 都会调用一些 javascript 动态地将新的 iframe 写入父窗口的文档中 这在首页加载时效果很好 但是 如果在 IE8 及更早版本 中刷新页面 动态生成的 iframe
  • 如何将用户重定向到 ACS 默认登录页面

    我正在使用天蓝色Access Control System ACS 在我的网络应用程序中对来自不同身份提供商的用户进行身份验证 我成功注册了使用 ACS 的申请 现在 我通过从 web config 文件中删除以下内容 删除了 ACS 的完
  • 从文本观察器访问编辑文本

    我正在使用 textWatcher final EditText et EditText findViewById R id editText1 final TextView tv TextView findViewById R id te
  • 监视文件更改时打开太多文件

    我正在为 iPad 开发一个基于文档浏览器的应用程序 我一直在使用SKQueue https github com daniel pedersen SKQueue监视文件的更改 以确保当用户在文档浏览器中执行操作时其元数据保持最新 启动监控
  • 每次更新路由时调用一个函数 vue.js

    我的应用程序中集成了对讲机 我需要拨打电话window Intercom update 每次我的网址改变时 我知道我可以添加它mounted 但我宁愿不修改我的所有组件并直接使用导航守卫 https router vuejs org en
  • 如何使无头浏览器可见 Python

    我通过设置以下参数创建了一个无头 webdriver chrome 浏览器 chrome options add argument headless 然后使用以下命令打开浏览器 driver webdriver Chrome executa
  • 更新jar中的类,指定目录吗?

    我想更新 jar 中的 class 文件 class 文件位于 jar 的文件夹中 如果我想更新它 我需要指定它所在的具体路径名吗 Do I do jar uf myJar jar myFolder myClass class or jus
  • C语言中的stdin是什么?

    我想构建自己的 scanf 函数 基本思想是将数据从一个内存地址保存到另一个内存地址 什么是标准输入 它是像 000ffaa 这样的内存地址吗 如果它是一个内存地址 那么它是什么 这样我就可以构建自己的 scanf 函数 谢谢 No std
  • 如何使用 Double 函数获取空值? [复制]

    这个问题在这里已经有答案了 可能的重复 从 C 创建 Excel XLS 和 XLSX 文件 https stackoverflow com questions 151005 create excel xls and xlsx file f
  • 检查 R 向量中的序列

    我正在寻找一个函数或操作 如果我有 A lt c 1 2 3 4 5 and B lt c 1 2 3 and C lt c 2 1 检查 A 是否包含 B 时得到 TRUE 检查 A 是否包含 C 时得到 FALSE 基本上 相当于 in
  • watchman 让 fsnotify 虚假地检测文件更改

    我正在使用 Git 的 watchmancore fsmonitor环境 我正在运行另一个工具 它使用 fsnotify 来检测文件更改并运行构建 watchman 正在做的事情是让 fsnotify 认为文件正在更改 而实际上文件并未更改
  • 用php返回json数据

    我想返回 json 数据 但我的代码不起作用 我没有收到任何错误消息 我有index php ajax php 和db php Db php 正在运行 但我的ajax代码不起作用 我的错误在哪里 索引 php div style width
  • 如何在 VS Code 的“输出”面板中搜索(“Ctrl+F”)?

    我曾经能够能够Ctrl F搜索登录的内容VS Code 现在 由于某种未知的原因 当我输入时搜索栏不会显示Ctrl F 我是版本1 57 这是目前最新的 This question https stackoverflow com quest
  • 原始异常文本为:“QuerySet”对象没有属性“weight”

    我遇到了异常尝试获取字段值时出现 AttributeErrorweight在串行器上WeightHistorySerializer 序列化器字段可能命名不正确并且与序列化器上的任何属性或键不匹配QuerySet实例 原始异常文本是 Quer
  • LISP:如何从一个文件中读取内容并将其写入另一个文件中?

    我想编写一个函数 该函数以两个文件的名称作为参数 并将内容从第一个文件复制到第二个文件 到目前为止 我编写了一个从文件读取的函数 defun readFile name let in open name format t a read li