• 手机下载链向财经官方IOS和安卓版APP

      链向财经APP下载

      使用环境
      iOS 9.0及以上
      Android 4.3及以上

    • 链向财经官方微信公众号

      链向财经官方微信公众号

      微信号:chainfor

    • 链向财经官方QQ群

      链向财经官方QQ群

      群号:570828491

    • 意见反馈
    • 回到顶部
    • 10047
    • 评论
    • 喜欢
    • 举报
    IPFS:可变文件系统(二)

    01-18 00:02

    标签IPFSMFS区块链

    来源:FilCloud

    七、建立目录

    我们已经学习了如何将文件添加到根目录,但是如何创建新目录?同样,此过程与您在自己的计算机上的命令行中所经历的非常相似。

    MFS 方法 files.mkdir 在指定的路径处创建一个新目录。例如,要将目录添加 images 到我们的根目录(/),我们可以这样做:

    await ipfs.files.mkdir('/images')

    可选 parents 属性,默认为 false,指定是否应在给定路径中创建任何父目录(如果尚不存在)。上面我们不需要,因为新 images 目录是现有目录(/)的直接子目录。但是,如果我们想创建一个嵌套在其他还不存在的新目录下,我们需要明确设置的值 parents 来 true,像这样:

    await ipfs.files.mkdir('/my/beautiful/images', { parents: true })

    尽管创建缺失路径的目标是相似的,但请注意我们如何将{ parents: true }选项与一起使用,files.mkdir 而不是{ create: true }与一起使用 files.write。

    我们已帮助您找到官方给出的文件,您可以进行操作体验,网址:https://proto.school/#/mutable-file-system/07

    八、移动文件或目录

    MFS 允许您像使用本地 files.mv 方法一样在目录之间移动文件。

    该方法如下所示:

    await ipfs.files.mkdir('/images')

    from 是您要移动的内容的源路径。to 是目标路径。

    如果您的目标路径引用了尚不存在的父目录,则需要像使用一样使用该{ parents: true }选项files.mkdir。

    您可以 files.mv 用来执行许多不同的操作:

    // move a single file into a directory await ipfs.files.mv('/source-file.txt', '/destination-directory') // move multiple files into a directory (note the two acceptable formats) await ipfs.files.mv('/source-file-1.txt', '/source-file-2.txt', '/destination-directory') await ipfs.files.mv(['/source-file-1.txt', '/source-file-2.txt'], '/destination-directory') // move a directory into another directory await ipfs.files.mv('/source-directory', '/destination-directory') // overwrite the contents of a destination file with the contents of a source file await ipfs.files.mv('/source-file.txt', '/destination-file.txt') 我们已帮助您找到官方给出的文件,您可以进行操作体验,网址:

    我们已帮助您找到官方给出的文件,您可以进行操作体验,网址:https://proto.school/#/mutable-file-system/08

    九、复制文件或目录

    与的不同之处 files.mv 在于,该方法在将项目移动到目标路径时将其从源路径中删除,该files.cp 方法允许您将文件或目录复制到新位置,同时在源位置保持原样。

    该方法如下所示:

    await ipfs.files.cp(...from, to, [options])

    但是,您现在有两个的格式选项 from。您可以传递:

    您自己节点中文件或目录的现有 MFS 路径(例如/my-dir/my-file.txt)。

    您或对等方(例如/ipfs/QmWGeRAEgtsHW3ec7U4qW2CyVy7eA2mFRVbk1nb24jFyks)托管的文件或目录的IPFS路径正如您所看到的那样 files.mv,它 to 是 MFS 中的目标路径,并且有一个选项{ parents: true }可用于创建尚不存在的父目录。

    您可以 files.cp 用来执行许多不同的操作:

    // copy a single file into a directory await ipfs.files.cp('/source-file.txt', '/destination-directory') await ipfs.files.cp('/ipfs/QmWGeRAEgtsHW3ec7U4qW2CyVy7eA2mFRVbk1nb24jFyks', '/destination-directory') // copy multiple files into a directory (note the two acceptable formats with or without [ ]) await ipfs.files.cp('/source-file-1.txt', '/source-file-2.txt', '/destination-directory') await ipfs.files.cp(['/source-file-1.txt', '/source-file-2.txt'], '/destination-directory') await ipfs.files.cp('/ipfs/QmWGeRAEgtsHW3ec7U4qW2CyVy7eA2mFRVbk1nb24jFyks', '/ipfs/QmWGeRAEgtsHW3jk7U4qW2CyVy7eA2mFRVbk1nb24jFyre', '/destination-directory') await ipfs.files.cp(['/ipfs/QmWGeRAEgtsHW3ec7U4qW2CyVy7eA2mFRVbk1nb24jFyks', '/ipfs/QmWGeRAEgtsHW3jk7U4qW2CyVy7eA2mFRVbk1nb24jFyre'], '/destination-directory') // copy a directory into another directory await ipfs.files.cp('/source-directory', '/destination-directory') await ipfs.files.cp('/ipfs/QmWGeRAEgtsHW3ec7U4qW2CyVy7eA2mFRVbk1nb24jFyks', '/destination-directory')

    如果您从 IPFS 路径复制文件而未明确分配文件名,则 IPFS 会将其 name 属性设置为 hash。要指定更友好的文件名,您需要将其附加到目标路径,如下所示:

    await ipfs.files.cp('/ipfs/QmWGeRAEgtsHW3ec7U4qW2CyVy7eA2mFRVbk1nb24jFyks', '/destination-directory/fab-file.txt')

    我们已帮助您找到官方给出的文件,您可以进行操作体验,网址:https://proto.school/#/mutable-file-system/09

    十、读取文件内容

    MFS 有一种 files.read 方法,允许您在缓冲区中显示文件的内容。这使我们能够轻松读取.txt 文件的内容。

    该方法采用以下格式:

    await ipfs.files.read(path, [options])

    该 path 提供的是读取文件的路径,它必须指向一个文件,而不是一个目录。

    该 files.read 方法返回一个 Buffer,可以使用 method 将其转换为字符串 toString('utf8')。

    例如:

    let bufferedContents = await ipfs.files.read('/directory/some-file.txt') // a buffer let contents = bufferedContents.toString('utf8') // a string

    要么

    let contents = (await ipfs.files.read('/directory/some-file.txt')).toString('utf8') // a string // notice the parentheses around the entire await statement

    当您准备好在现实世界中尝试此操作时,应注意,files.read根据读取的文件内容,该方法可能会导致占用大量内存。您可能想探索 files.readReadableStreamor files.readPullStream方法。

    我们已帮助您找到官方给出的文件,您可以进行操作体验,网址:https://proto.school/#/mutable-file-system/10

    十一、删除文件或目录

    MFS 允许您使用以下 files.rm 方法删除文件或目录:

    await ipfs.files.rm(...paths, [options])

    paths 是一条或多条要删除的路径。

    默认情况下,如果您尝试删除仍包含目录的目录,则请求将失败。要删除目录及其中包含的所有内容,您需要使用选项{ recursive: true }。

    // remove a file await ipfs.files.rm('/my/beautiful/file.txt') // remove multiple files (note the two acceptable formats with or without [ ]) await ipfs.files.rm('/my/beautiful/file.txt', '/my/other/file.txt') await ipfs.files.rm(['/my/beautiful/file.txt', '/my/other/file.txt']) // remove a directory and its contents await ipfs.files.rm('/my/beautiful/directory', { recursive: true }) // remove a directory only if it is empty await ipfs.files.rm('/my/beautiful/directory')

    我们已帮助您找到官方给出的文件,您可以进行操作体验,网址:https://proto.school/#/mutable-file-system/11

    非常感谢您对 IPFS&Filecoin 项目的持续支持。我们很高兴继续与您一起,为人类信息建立一个强大的,去中心化和高效的基础。

    已有0人喜欢

    本文经授权发布,不代表链向财经立场。如若转载请标注文章来源:链向财经(www.chainfor.com)

    为了您能更及时的获取到最新热门资讯,请关注链向财经微信公众号:LXcaijing

    发表评论
    请先 注册 / 登录 后参与评论
    已有0发布
      已查看全部
      举报
      • 内容涉嫌抄袭,代表月亮消灭他/她
      • 发布不实消息,画个圈圈诅咒他/她
      • 诱导投资,放毛毛,揍他/她
      • 侵犯名誉、隐私,这个借一步说话
      • 其他
      具体描述(选填):
      取消提交