LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > IPFS:可变文件系统(二)

IPFS:可变文件系统(二)

2019-11-27 FilCloud 来源:区块链网络
yuLJeZ3UksrG5jJlzgq3WtRZdpNnJyYSg5m5vNHP.png七、建立目录

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

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。

IPFS:可变文件系统(二)

八、移动文件或目录

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

该方法如下所示:

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

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')

IPFS:可变文件系统(二)

九、复制文件或目录

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

该方法如下所示:

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

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

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

您或对等方(例如/ipfs/QmWGeRAEgtsHW3ec7U4qW2CyVy7eA2mFRVbk1nb24jFyks)托管的文件或目录的IPFS路径

请注意,IPFS路径以/ipfs/CID 开头和结尾。

正如您所看到的那样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')

IPFS:可变文件系统(二)

十、读取文件内容

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方法。

IPFS:可变文件系统(二)

—-

编译者/作者:FilCloud

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...