跳转到内容

BlitzMax/模块/系统/文件系统

来自 Wikibooks,开放世界中的开放书籍

BlitzMax 文件系统模块包含用于对计算机的文件和目录执行操作的命令。

OpenFileReadFileWriteFile 返回一个流对象,用于读取和/或写入文件数据。

可以使用 ReadDirNextFileCloseDir 命令的组合逐个文件检查目录,或者可以使用 LoadDir 将目录的文件名读取到字符串数组中。

可以使用 FileTypeFileTimeFileSizeFileMode 命令检查文件属性。

可以使用 CreateFileCreateDir DeleteFileDeleteDir 命令创建和删除文件和目录(文件夹)。

最后,FileSystem 模块包含各种实用程序函数,用于以系统无关的方式处理文件路径。这些命令包括 RealPathStripDirStripExtStripAllExtractDirExtractExt

函数 StripDir$( path$ )

描述:从文件路径中删除目录

示例:

' stripdir.bmx

print stripdir("mypath/myfile.bmx")	'prints myfile.bmx

函数 StripExt$( path$ )

描述:从文件路径中删除扩展名

示例:

' stripext.bmx

print stripext("mypath/myfile.bmx")	'prints mypath/myfile

函数 StripAll$( path$ )

描述:从文件路径中删除目录和扩展名

示例:

' stripall.bmx

print stripall("mypath/myfile.bmx")	'prints myfile

StripSlash

[编辑 | 编辑源代码]

函数 StripSlash$( path$ )

描述:从文件路径中删除尾部斜杠

信息StripSlash 不会从“根”路径中删除尾部斜杠。例如,“/”或(仅限 Win32)“C:/”。

示例:

' stripslash.bmx

print stripslash("mypath/")	'prints mypath

ExtractDir

[编辑 | 编辑源代码]

函数 ExtractDir$( path$ )

描述:从文件路径中提取目录

示例:

' extractdir.bmx

print extractdir("mypath/myfile.bmx")	'prints mypath

ExtractExt

[编辑 | 编辑源代码]

函数 ExtractExt$( path$ )

描述:从文件路径中提取扩展名

示例:

' extractext.bmx

print extractext("mypath/myfile.bmx")	'prints bmx

CurrentDir

[编辑 | 编辑源代码]

函数 CurrentDir$()

描述:获取当前目录

返回值:当前目录

示例:

' currentdir.bmx

cd$=currentdir()
print "CurrentDir()="+cd$

函数 RealPath$( path$ )

描述:获取文件路径的真实绝对路径

示例:

' realpath.bmx

print realpath("realpath.bmx")	'prints full path of this source

print realpath("..") 'prints full path of parent directory

函数 FileType( path$ )

描述:获取文件类型

返回值:如果 path 处文件不存在,则返回 0;如果文件是普通文件,则返回 FILETYPE_FILE (1);如果文件是目录,则返回 FILETYPE_DIR (2)

示例:

' filetype.bmx

print filetype(".")		'prints 2 for directory type
print filetype("filetype.bmx")	'prints 1 for file type
print filetype("notfound.file")	'prints 0 for doesn't exist

函数 FileTime( path$ )

描述:获取文件时间

返回值path 处文件上次修改的时间

示例:

' filetime.bmx

print filetime("filetime.bmx")

函数 FileSize( path$ )

描述:获取文件大小

返回值path 处文件的大小(以字节为单位),如果文件不存在,则返回 -1

示例:

' filesize.bmx

' the following prints the size of this source file in bytes

print filesize("filesize.bmx")

函数 FileMode( path$ )

描述:获取文件模式

返回值:文件模式标志

示例:

' filemode.bmx

' the following function converts the file mode to 
' the standard unix permission bits string

Function Permissions$(mode)
	local	testbit,pos
	local	p$="rwxrwxrwx"
	testbit=%100000000
	pos=1
	while (testbit)
		if mode & testbit res$:+mid$(p$,pos,1) else res$:+"-"
		testbit=testbit shr 1
		pos:+1	
	wend
	return res
End Function

print Permissions$(filemode("filemode.bmx"))

SetFileMode

[编辑 | 编辑源代码]

函数 SetFileMode( path$,mode )

描述:设置文件模式

示例:

' setfilemode.bmx

' the following makes this source file readonly

writebits=%010010010

' read the file mode

mode=filemode("setfilemode.bmx")

'mask out the write bits to make readonly

mode=mode & ~writebits

'set the new file mode

setfilemode("setfilemode.bmx",mode)	

CreateFile

[编辑 | 编辑源代码]

函数 CreateFile( path$ )

描述:创建文件

返回值:如果成功,则返回 True

示例:

' createfile.bmx

success=createfile("myfile")
if not success runtimeerror "error creating file"

CreateDir

[编辑 | 编辑源代码]

函数 CreateDir( path$,recurse=False )

描述:创建目录

返回值:如果成功,则返回 True

信息:如果 recurse 为 true,则还会创建任何必需的子目录。

示例:

' createdir.bmx

success=createdir("myfolder")
if not success runtimeerror "error creating directory"

DeleteFile

[编辑 | 编辑源代码]

函数 DeleteFile( path$ )

描述:删除文件

返回值:如果成功,则返回 True

示例:

' deletefile.bmx

success=deletefile("myfile")
if not success runtimeerror "error deleting file"

RenameFile

[编辑 | 编辑源代码]

Function RenameFile( oldpath$,newpath$ )

描述:重命名文件

返回值:如果成功,则返回 True

Function CopyFile( src$,dst$ )

描述:复制文件

返回值:如果成功,则返回 True

Function CopyDir( src$,dst$ )

描述:复制目录

返回值:如果成功,则返回 True

DeleteDir

[编辑 | 编辑源代码]

Function DeleteDir( path$,recurse=False )

描述:删除目录

返回值:如果成功,则返回 True

信息:将recurse设置为true以递归删除所有子目录和文件 - 但请谨慎操作!

示例:

' deletedir.bmx

success=deletedir("myfolder")
if not success runtimeerror "error deleting directory"

ChangeDir

[编辑 | 编辑源代码]

Function ChangeDir( path$ )

描述:更改当前目录

返回值:如果成功,则返回 True

示例:

' changedir.bmx

print "CurrentDir()="+currentdir()

' change current folder to the parent folder

changedir ".."

' print new CurrentDir()

print "CurrentDir()="+currentdir()

Function ReadDir( path$ )

描述:打开目录

返回值:一个整数目录句柄,如果目录不存在则返回0

示例:

' readdir.bmx

dir=ReadDir(CurrentDir())

If Not dir RuntimeError "failed to read current directory"

Repeat
	t$=NextFile( dir )
	If t="" Exit
	If t="." Or t=".." Continue
	Print t	
Forever

CloseDir dir

Function NextFile$( dir )

描述:返回目录中的下一个文件

返回值:使用ReadDir打开的目录中下一个文件的名称,如果不再有文件可读则返回空字符串。

Function CloseDir( dir )

描述:关闭目录

Function LoadDir$[]( dir$,skip_dots=True )

描述:加载目录

返回值:包含dir内容的字符串数组

信息:如果skip_dots参数为真,则从返回的数组中删除“.”(当前)和“..”(父)目录。

示例:

' loaddir.bmx

' declare a string array

local files$[]

files=loaddir(currentdir())

for t$=eachin files
	print t	
next

Function OpenFile:TStream( url:Object,readable=True,writeable=True )

描述:打开一个文件以进行输入和/或输出。

信息:此命令类似于OpenStream命令,但会尝试缓存文件的内容以确保诸如http:之类的串行流是可查找的。使用CloseStream命令完成读取和/或写入OpenFile返回的流。

示例:

' openfile.bmx

' the following prints the contents of this source file 

file=openfile("openfile.bmx")

if not file runtimeerror "could not open file openfile.bmx"

while not eof(file)
	print readline(file)
wend
closestream file

Function ReadFile:TStream( url:Object )

描述:打开一个文件以进行输入。

信息:此命令类似于ReadStream命令,但会尝试缓存文件的内容以确保诸如http:之类的串行流是可查找的。使用CloseStream命令完成读取和/或写入OpenFile返回的流。

示例:

' readfile.bmx

' the following prints the contents of this source file 

file=readfile("readfile.bmx")

if not file runtimeerror "could not open file openfile.bmx"

while not eof(file)
	print readline(file)
wend

closestream file

WriteFile

[编辑 | 编辑源代码]

Function WriteFile:TStream( url:Object )

描述:打开一个文件以进行输出。

信息:此命令与WriteStream命令相同。

示例:

' writefile.bmx

file=writefile("test.txt")

if not file runtimeerror "failed to open test.txt file" 

writeline file,"hello world"

closestream file

CloseFile

[编辑 | 编辑源代码]

Function CloseFile( stream:TStream )

描述:关闭文件流。

信息:在对打开的文件执行文件操作后,请确保使用CloseFile或相同的CloseStream命令关闭文件流。

华夏公益教科书