创建文本文件 write/add 几个图像名称
Create text file to write/add of a couple of images name
我试图获取一个脚本来创建一个可以 write/add 图片名称的文本文件,但是函数
FileID = CreateFileForWriting(filename)
不起作用,它表明已被其他进程使用
没看懂,是这个函数格式不对还是哪里有问题,thx
Number Totaln
totaln=countdocumentwindowsoftype(5)
String filename, text
Number fileID
if (!SaveasDialog( "save text file as",getapplicationdirectory(2,0) + "Imagename.txt", filename))exit(0)
fileID = CreateFileForWriting(filename)
number i
for(i = 0; i <totaln; i++)
{
image imgSRC
imgSRC := GetFrontImage()
string imgname=getname(imgSRC)
WriteFile(fileID,"imgname")
Result("imgname")
}
您的代码 几乎 没问题,但是如果您对文件 I/O 使用 low-level API,则需要确保您 关闭 个您打开或创建的文件。
你的脚本没有。因此,它 运行 正好有 1 次,但会在 re-run 时失败(当文件仍被视为打开时。)
要修复它,您需要在末尾添加 closefile(fileID)
。
(顺便说一句,如果您的脚本在打开文件之后但在关闭文件之前退出或抛出异常,您会遇到同样的问题。)
但是,我强烈建议不要使用 low-level API,而是使用文件流对象。它还提供了一种自动 file-closing 机制,这样您就不会 运行 陷入这个问题。
执行您在脚本中执行的操作将写为:
void writeCurrentImageNamesToText()
{
number nDoc = CountImageDocuments()
string filename
if (!SaveasDialog( "save text file as",getapplicationdirectory(2,0) + "Imagename.txt", filename)) return
number fileID = CreateFileForWriting(filename)
object fStream = NewStreamFromFileReference(fileID,1) // 1 for auto-close file when out of scope
for( number i = 0; i <nDoc; i++ ){
string name = GetImageDocument(i).ImageDocumentGetName()
fStream.StreamWriteAsText( 0, name + "\n" ) // 0 = use system encoding for text
}
}
writeCurrentImageNamesToText()
我试图获取一个脚本来创建一个可以 write/add 图片名称的文本文件,但是函数
FileID = CreateFileForWriting(filename)
不起作用,它表明已被其他进程使用
没看懂,是这个函数格式不对还是哪里有问题,thx
Number Totaln
totaln=countdocumentwindowsoftype(5)
String filename, text
Number fileID
if (!SaveasDialog( "save text file as",getapplicationdirectory(2,0) + "Imagename.txt", filename))exit(0)
fileID = CreateFileForWriting(filename)
number i
for(i = 0; i <totaln; i++)
{
image imgSRC
imgSRC := GetFrontImage()
string imgname=getname(imgSRC)
WriteFile(fileID,"imgname")
Result("imgname")
}
您的代码 几乎 没问题,但是如果您对文件 I/O 使用 low-level API,则需要确保您 关闭 个您打开或创建的文件。
你的脚本没有。因此,它 运行 正好有 1 次,但会在 re-run 时失败(当文件仍被视为打开时。)
要修复它,您需要在末尾添加 closefile(fileID)
。
(顺便说一句,如果您的脚本在打开文件之后但在关闭文件之前退出或抛出异常,您会遇到同样的问题。)
但是,我强烈建议不要使用 low-level API,而是使用文件流对象。它还提供了一种自动 file-closing 机制,这样您就不会 运行 陷入这个问题。
执行您在脚本中执行的操作将写为:
void writeCurrentImageNamesToText()
{
number nDoc = CountImageDocuments()
string filename
if (!SaveasDialog( "save text file as",getapplicationdirectory(2,0) + "Imagename.txt", filename)) return
number fileID = CreateFileForWriting(filename)
object fStream = NewStreamFromFileReference(fileID,1) // 1 for auto-close file when out of scope
for( number i = 0; i <nDoc; i++ ){
string name = GetImageDocument(i).ImageDocumentGetName()
fStream.StreamWriteAsText( 0, name + "\n" ) // 0 = use system encoding for text
}
}
writeCurrentImageNamesToText()