操作文件(菜鸟问题)

enhydra_boy 2003-09-04 05:17:48
我想实现这样的功能:

1 取得某文件的全路径
2 更改这个文件的文件名
3 创建文件夹

我该怎样做?
或者那里有这样的例子?

...全文
45 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sw47 2003-09-05
  • 打赏
  • 举报
回复
用递归算法实现ASP程序对硬盘上某个路径下目录和文件的遍历

胡磊

由于工作需要,要做一个对硬盘上目录的遍历程序,因此想用asp来实现这个功能,

便写了一下这段程序。程序中主要用到asp的filesystemobject文件系统对象。可以

作为给希望了解和学习fso的朋友们的一个学习程序。

文件名称bianli.asp

<%@ Language=VBScript %>
<%
function bianli(path)
dim fso 'fso对象
dim objFolder '文件夹对象
dim objSubFolders '子文件夹集合
dim objSubFolder '子文件夹对象
dim objFiles '文件集合
dim objFile '文件对象

set fso=server.CreateObject("scripting.filesystemobject")
on error resume next
set objFolder=fso.GetFolder(path)'创建文件夹对象
set objSubFolders=objFolder.Subfolders'创建的子文件夹对象
for each objSubFolder in objSubFolders
nowpath=path + "\" + objSubFolder.name
Response.Write nowpath
set objFiles=objSubFolder.Files
for each objFile in objFiles
Response.Write "<br>---"
Response.Write objFile.name
next
Response.Write "<p>"
bianli(nowpath) '调用递归
next
set objFolder=nothing
set objSubFolders=nothing
set fso=nothing
end function
%>
<%
bianli("d:") '调用bianli()函数,这里是遍历d:盘
%>

以上程序在win2000 server上运行通过。
xupiao 2003-09-05
  • 打赏
  • 举报
回复
'用下面的可以判定文件是否存在

Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
if MyFileObject.FileExists(Server.MapPath(filename)) then
文件存在
end if
xiaobird1 2003-09-05
  • 打赏
  • 举报
回复
提交后使用
Request.Form("filename")就可以取得用户选择文件的全路经。

存入变量后就可以使用fso操作了。
enhydra_boy 2003-09-05
  • 打赏
  • 举报
回复


继续帮我呀
enhydra_boy 2003-09-04
  • 打赏
  • 举报
回复
谢谢你们的回答

我还有一个问题: 你们所说的都是知道那个文件在具体位置。

但我现在不知道它的具体位置

所以我现在就想通过像<input name="filename" type="file" id="" > 这样的控件来找到这个文

件的位置,然后再得到它的文件名或更改它的文件名。

我该怎么做


sw47 2003-09-04
  • 打赏
  • 举报
回复
四、操作文件夹(Folders)
涉及到文件夹的操作包括创建、移动、删除以及获取相关属性。
Folder对象操作例程 :
下面的例程将练习获取父文件夹名称、创建文件夹、删除文件夹、判断是否为根目录等操作:
var fso, fldr, s = "";
// 创建FileSystemObject对象实例
fso = new ActiveXObject("Scripting.FileSystemObject");
// 获取Drive 对象
fldr = fso.GetFolder("c:\\");
// 显示父目录名称
alert("Parent folder name is: " + fldr + "\n");
// 显示所在drive名称
alert("Contained on drive " + fldr.Drive + "\n");
// 判断是否为根目录
if (fldr.IsRootFolder)
alert("This is the root folder.");
else
alert("This folder isn't a root folder.");
alert("\n\n");
// 创建新文件夹
fso.CreateFolder ("C:\\Bogus");
alert("Created folder C:\\Bogus" + "\n");
// 显示文件夹基础名称,不包含路径名
alert("Basename = " + fso.GetBaseName("c:\\bogus") + "\n");
// 删除创建的文件夹
fso.DeleteFolder ("C:\\Bogus");
alert("Deleted folder C:\\Bogus" + "\n");
五、操作文件(Files)
对文件进行的操作要比以上介绍的驱动器(Drive)和文件夹(Folder)操作复杂些,基本上分为以下两个类别:对文件的创建、拷贝、移动、删除操作和对文件内容的创建、添加、删除和读取操作。下面分别详细介绍。
(一)创建文件
一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(text stream)。
第一种是使用CreateTextFile方法。代码如下:
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
第二种是使用OpenTextFile方法,并添加上ForWriting属性,ForWriting的值为2。代码如下:
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);
第三种是使用OpenAsTextStream方法,同样要设置好ForWriting属性。代码如下:
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c:\\test1.txt");
f1 = fso.GetFile("c:\\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);
(二)添加数据到文件
当文件被创建后,一般要按照“打开文件->填写数据->关闭文件”的步骤实现添加数据到文件的目的。
打开文件可使用FileSystemObject对象的OpenTextFile方法,或者使用File对象的OpenAsTextStream方法。
填写数据要使用到TextStream对象的Write、WriteLine或者WriteBlankLines方法。在同是实现写入数据的功能下,这3者的区别在于:Write方法不在写入数据末尾添加新换行符,WriteLine方法要在最后添加一个新换行符,而WriteBlankLines则增加一个或者多个空行。
关闭文件可使用TextStream对象的Close方法。
(三)创建文件及添加数据例程
下面的代码将创建文件、添加数据、关闭文件几个步骤结合起来进行应用:
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 创建新文件
tf = fso.CreateTextFile("c:\\testfile.txt", true);
// 填写数据,并增加换行符
tf.WriteLine("Testing 1, 2, 3.") ;
// 增加3个空行
tf.WriteBlankLines(3) ;
// 填写一行,不带换行符
tf.Write ("This is a test.");
// 关闭文件
tf.Close();
(四)读取文件内容
从文本文件中读取数据要使用TextStream对象的Read、ReadLine或ReadAll 方法。Read方法用于读取文件中指定数量的字符;ReadLine方法读取一整行,但不包括换行符;ReadAll方法则读取文本文件的整个内容。读取的内容存放于字符串变量中,用于显示、分析。在使用Read或ReadLine方法读取文件内容时,如果要跳过一些部分,就要用到Skip或SkipLine方法。
下面的代码演示打开文件、填写数据,然后读取数据:
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 创建文件
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
// 填写一行数据
f1.WriteLine("Hello World");
f1.WriteBlankLines(1);
// 关闭文件
f1.Close();
// 打开文件
ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
// 读取文件一行内容到字符串
s = ts.ReadLine();
// 显示字符串信息
alert("File contents = '" + s + "'");
// 关闭文件
ts.Close();
(五)移动、拷贝和删除文件
对于以上三种文件操作,Javascript各有两种对应的方法:File.Move 或 FileSystemObject.MoveFile用于移动文件;File.Copy 或 FileSystemObject.CopyFile用于拷贝文件;File.Delete 或 FileSystemObject.DeleteFile用于删除文件。
下面的代码演示在驱动器C的根目录下创建一个文本文件,填写一些内容,然后将文件移动到\tmp目录下,再在目录\temp下面建立一个文件拷贝,最后删除这两个目录的文件:
var fso, f1, f2, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
// 写一行
f1.Write("This is a test.");
// 关闭文件
f1.Close();
// 获取C:\根目录下的文件句柄
f2 = fso.GetFile("c:\\testfile.txt");
// 移动文件到\tmp目录下
f2.Move ("c:\\tmp\\testfile.txt");
// 拷贝文件到\temp目录下
f2.Copy ("c:\\temp\\testfile.txt");
// 获取文件句柄
f2 = fso.GetFile("c:\\tmp\\testfile.txt");
f3 = fso.GetFile("c:\\temp\\testfile.txt");
// 删除文件
f2.Delete();
f3.Delete();
六、结 语
通过以上对FileSystemObject的各种对象、属性和方法的介绍和示例,相信你已经对如何使用JavaScript语言在页面中操作驱动器、文件和文件夹有了清晰的认识。但是上述提及的例程都非常简单,要全面、灵活地掌握JavaScript文件操作技术,还需要大量的实践练习。而且还有一点提醒大家,由于涉及到在浏览器中进行文件读写这样的高级操作,对于默认的浏览器安全级别而言,在代码运行前都会有一个信息提示,这点请在实际环境中提示访问者注意。
_________________________________________________________________________________________________
cqfeng 2003-09-04
  • 打赏
  • 举报
回复
取得某文件的全路径:

<% response.write server.mapPath("1.asp") %>
cqfeng 2003-09-04
  • 打赏
  • 举报
回复
FileSystemObject对象包括了许多种集合和方法来处理文件夹,下面是对每一种主要的使用进行分别的介绍:
■CopyFolder source, destination [,Overwrite]。这个方法用来进行文件夹的复制,你 可以使用通配符来进行多目录的复制(进行备份工作),同时,如果目的目录已经存在,可以通过将Overwrite参数设为TRUE的方法来进行覆盖。注意这里面默认值为TRUE。
■CreateFolder FolderSpecifier。创建一个指定的文件夹
■DeleteFolder FolderSpecifier。删除一个指定的文件夹
■FolderExists(FolderSpecifier). 如果该指定文件夹存在,返回True,否则返回False。
■GetFolder(FolderSpecifier). 对指定的文件夹创建一个Folder对象
■GetParentFolderName(Path).返回包含该路径的上一级目录名。
■MoveFolder source, Destinatioin。将指定目录进行移动,你可以利用通配符来移动 多个文件夹。

下面是一个典型应用的例子:

<%
'创建一个FileSystemObject对象的事例
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
'创建一个用来操作的文件夹
MyFileObject.CreateFolder("C:\NewFolder")
'移动该文件夹
MyFileObject.MoveFolder "C:\NewFolder" "C:\NewFolder2"
'删除这个文件夹
MyFileObject.DeleteFolder "C:\NewFolder2"
%>

下面介绍相应的Folder对象中的方法、属性。
■CopyFolder newcopy [,overwrite].将当前文件夹复制到新的位置,如果存在与目的 文件夹同名情况而且overwrite参数为False,则会报错。
■DeleteFolder.删除当前文件夹
■Files.返回所有该目录下文件的集合。其中隐含文件不显示
■IsRootFolder.如果是根目录返回True
■MoveFolder FolderSpecifier.移动当前目录到另外的位置
■name.返回当前目录名称
■ParentFolder.返回到上一级目录
■Size.显示目前目录及子目录的所有文件大小总和。
■SubFolders.返回为所有这个文件夹下面子目录的集合。

利用这些方法之前,你需要首先创建一个Folder对象的事例。下面的例子将显示所有C:\MyFolder下面的子目录。

<%
'创建一个FileSystemObject对象的事例
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
'创建一个Folder对象
Set MyFolder=MyFileObject.GetFolder("c:\MyFolder")
'循环显示其中子目录
For Each thing in MyFolder.Files
Response.Write("<p>"&thing)
Next
%>
cqfeng 2003-09-04
  • 打赏
  • 举报
回复
对文件进行处理

这个部分是介绍怎样进行文件处理的:拷贝,移动以及删除文件;以及怎样检测一个文件是否存在和接收一个文件的有关属性。

拷贝、移动以及删除文件
有不止一种方法来对文件进行拷贝、移动以及删除工作。你可以利用FileSystemObject对象的方法或者File对象的方法,其中FileSystemObject对象的方法更具有些变通性,因为你会不局限于一个单独的文件上。

下面是FileSystemObject对象对文件操作的一些方法:
■CopyFile source, destination,[Overwrite]。这个方法将文件进行复制,你可以使用 source参数统配符来在一个时刻进行多个文件的复制。OverWrite参数将在目的文件已经存在的情况下进行覆盖操作。
■MoveFile source, destination.这个方法对文件进行移动操作,同样你可以使用统配 符来移动多个文件,不过如果目的文件已经存在,则会报错而不允许覆盖。
■DeleteFile FileSpecifier。这个方法删除指定文件,同样还是可以利用统配符来进 行多文件的删除。如果没有符合统配符的文件,将会报错。

在你使用这些方法之前,首先当然还是创建一个FileSystemObject对象的事例。下面就是一个完整的使用示例:

<%
'创建一个FileSystemObject的事例
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
'创建一个要进行操作的文件
Set MyFile=MyFileObject.CreateTextFile("c:\test.txt")
MyFile.WriteLine("Hello")
MyFile.Close
'复制文件操作
MyFileObject.CopyFile "c:\test.txt" "c:\test2.txt"
'移动文件操作
MyFileObject.MoveFile "c:\test.txt" "c:\test3.txt"
'删除这些文件
MyFileObject.DeleteFile "c:\test.txt"
MyFileObject.DeleteFile "c:\test3.txt"
%>

除了使用FileSystemObject对象的方法来进行这种操作以外,你还可以使用FILE对象。下面是File对象相关操作的同等方法:
■Copy newcopy,[Overwrite]。这种方法给当前文件创建一个拷贝,当可选的 OverWrite参数为TRUE时,如果存在同名的目的文件,则进行覆盖。
■Move newcopy.这个方法用来移动当前文件,同时当前文件跟随到新的名称。
■Delete。删除当前文件。

在你使用这些方法之前,你必须创建File对象的一个事例,这样的事例创建是在FileSystemObject对象中使用GetFile()方法来完成的,下面这个脚本就是利用File对象进行各种操作的一个示例:

<%
'创建一个FileSystemObject对象的事例
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
'创建一个要进行操作的文件
Set MyFile=MyFileObject.CreateTextFile("c:\test.txt")
MyFile.WriteLine("Hello")
MyFile.Close
'创建一个File对象的事例
Set afile=MyFileObject.GetFile("c:\test.txt")
'复制文件
Afile.copy "c:\test2.txt"
'移动文件
Afile.Move "c:\test3.txt"
'删除文件
afile.Delete
%>
 
检测文件是否存在
如果需要了解一个特定的文件是否存在,你需要FileSystemObject对象的FileExists()方法,只需要传递其物理地址就可以从返回值是True和False来判断其是否存在,下面就是这样一个例子:

<HTML>
<HEAD><TITLE>文件是否存在示例</TITLE></HEAD>
<BODY>
<%
MySelf=Request.ServerVariables("PATH_TRANSLATED")
'创建一个FileSystemObject对象事例
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
IF MyFileObject.FileExists("MySelf")
Response.write("存在这个文件")
Else
Response.write("不存在这个文件")
END IF
%>
</BODY>
</HTML>

这个脚本就是检查是否存在一个指定的文件,在本例中,显然是存在的,因为MySelf就是当前这个文件(这里面使用了ServerVariables变量PATH_TRANSLATED来获取当前文件的物理地址),当前这个文件无论如何肯定是存在的,因此返回值肯定是TRUE,那么显示为"存在这个文件"。

接受文件属性
当处理文件时,有些属性是需要了解的,下面是File对象的属性列表:
■Attributes.这个属性类似于Dos命令的Attrib,显示当前文件的系统属性。例如Read-Only,Hidden,System等等
■DateCreated.这个属性返回文件创建的时间和日期。
■DateLastAccessed.这个属性返回该文件上一次被使用的日期和时间
■DateLastModified.这个属性返回该文件上一次被修改的日期和时间
■Drive. 这个属性返回值为该文件所在的驱动器
■Name.这个属性返回该文件文件名
■ParentFolder.这个属性返回值为该文件所处的文件夹
■Path.返回该文件的全路径
■Size.返回该文件的字节数
■Type.返回该文件类型,例如Text文本,Asp文件,或者网络资源(HTML)

在使用这些属性之前,依然首先需要创建一个File对象的事例。下一个例子就是显示c:\test.txt的各项属性。

<HTML>
<HEAD><TITLE>迈至科网络ASP教程之文件属性示例</TITLE></HEAD>
<BODY>
<%
'创建一个FileSystemObject对象的事例
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
'创建一个File对象的事例
Set Myfile=MyFileObject.GetFile("c:\test.txt")
%>
<Br>名称:<%=Myfile.Name %>
<Br>路径:<%=Myfile.Path %>
<Br>驱动器:<%=Myfile.Drive %>
<Br>大小:<%=Myfile.size %>
<Br>类型:<%=Myfile.type %>
<Br>属性:<%=Myfile.Attributes %>
<Br>创建日期:<%=Myfile.DateCreated %>
<Br>上次进入日期:<%=Myfile.LastAccessed %>
<Br>上次修改日期:<%=Myfile.LassModified %>
</BODY>
</HTML>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧