IPFS:可变文件系统(二)

注册【OKEx】交易所,免费获得价值¥50比特币
注册【币安】交易所,快速购买比特币与BNB
注册【火币】交易所,快速交易数百种加密货币

​建立目录

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

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

 

本文由 区块链技术网 作者:FilCloud 发表,其版权均为 区块链技术网 所有,文章内容系作者个人观点,不代表 区块链技术网 对观点赞同或支持。如需转载,请注明文章来源。

注册【OKEx】交易所,免费获得价值¥50比特币
注册【币安】交易所,快速购买比特币与BNB
注册【火币】交易所,快速交易数百种加密货币