c#写一个函数,读出某个文件夹下所有文件和子文件夹的路径,并把这些路径放到一个LIST里面

c#写一个函数,读出某个文件夹下所有文件和子文件夹的路径,并把这些路径放到一个LIST里面,第1张

        static List<string> list = new List<string>();//定义list变量,存放获取到的路径

        public static List<string> getPath(string path)

        {

            DirectoryInfo dir = new DirectoryInfo(path);

            FileInfo[] fil = dirGetFiles();

            DirectoryInfo[] dii = dirGetDirectories();

            foreach (FileInfo f in fil)

            {

                listAdd(fFullName);//添加文件的路径到列表

            }

            //获取子文件夹内的文件列表,递归遍历

            foreach (DirectoryInfo d in dii)

            {

                getPath(dFullName);

                listAdd(dFullName);//添加文件夹的路径到列表

            }

            return list;

        }

调用此函数需要传入指定的文件夹路径,如 D:\MyFile 可以将该文件夹下的文件和子文件夹路径全部获取,并利用递归,获取子文件夹内所有内容。

在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为commons-fileupload依赖于commons-io这个包,所以需要下载这两个包commons-fileupload-121jar和commons-io-132jar。

1、搭建环境

创建Web项目,将包导入到项目lib下

2、实现文件上传

(第一种上传的方法)

新建uploadjsp页面

12345678910111213141516<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ";

新建处理文件上传的Servlet

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667package comload; import javaioFile;import javaioIOException;import javautilList;import javaxservletServletContext;import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet);  }}

(第二种上传的方法)

新建Jsp页面(同上,只是路径改变下)

12345678910111213141516<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ";

建立Servlet处理上传

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263package comload; import javaioFile;import javaioFileOutputStream;import javaioIOException;import javaioInputStream;import javaioOutputStream;import javaxservletServletException;import javaxservletannotationMultipartConfig;import javaxservletannotationWebServlet;import javaxservlet);  }}

(第三种上传的方法)

这里使用的是jspSmartUpload包上传下载,笔者认为这种上传下载较为简单,但是好像不是很多人用,不懂。

创建HTML页面

123456789101112131415161718192021222324252627<!DOCTYPE html><html><head><meta ;

创建Servlet处理上传文件

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182package comload; import javaioIOException;import javaioPrintWriter; import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet);  } }

注意:代码 int count = susave("/share");表示你需要先建个文件夹,所以你可以先在Webcontent建立一个,然后将项目取消部署,再重新部署进去之后就会在运行那边建立起一个文件夹了!

或者你可以直接找到运行的路径,然后建立share文件夹。

3、实现文件下载

(第一种文件下载)

注意:该代码是直接访问Servlet类的

123456789101112131415161718192021222324252627282930313233343536373839404142package comload; import javaioFileInputStream;import javaioIOException;import javaioInputStream;import javaioOutputStream; import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet);  } }

(第二种下载方法)

新建jsp页面选择下载

<%@ page language="java" contentType="text/html; charset=UTF-8"

  pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ";

创建Servlet类进行下载(注意:该下载如果文件名是中文的话,一样会出现乱码现象)

package comload;

 import javaioBufferedInputStream;import javaioFile;import javaioFileInputStream;import javaioIOException;import javaioInputStream;import javaioOutputStream;import javanetURLEncoder; import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet);  }}

(第三种下载的方法)

同上的jsp页面代码,这里就不再重复了。

新建Serlvet类,实现下载功能(注意:这里文件名就算是中文名,也不会出现乱码问题了!)

package comload;

 import javaioBufferedInputStream;import javaioFile;import javaioFileInputStream;import javaioIOException;import javaioInputStream;import javaioOutputStream;import javanetURLEncoder; import javaxservletServletException;import javaxservletannotationWebServlet;import javaxservlet>

<form action="uploadURL" method="post" enctype="multipart/form-data">

标题:<input type="text" name="tit" /><br/>

内容:<input type="text" name="te" /><br/>

1:<input type="file" name="img1"/><br/>

2:<input type="file" name="img2"/><br/>

<input type="submit" value="提交">

</form>

//创建硬盘文件工厂对象,设置上传的缓存区大小和临时文件

DiskFileItemFactory disk=new DiskFileItemFactory();

//实例化servlet上传的对象,把表单的数据都放在这个对象中

ServletFileUpload up=new ServletFileUpload(disk);

List<FileItem> list=upparseRequest(request);

//由于list中有普通表单和非普通表单 所以给定两个集合

Map<String,String> map=new HashMap<String, String>();

for(int i=0;i<listsize();i++){

FileItem item=listget(i); //获取表单的数据

if(itemisFormField()){//判断该数据属否是普通表单的数据

//获取普通表单的数据

String namename=itemgetFieldName(); //获取表单的名

String formvalue=itemgetString(); //获取输出的值

String value=new String(formvaluegetBytes("ISO-8859-1"),"utf-8"); //给获取的值 设置编码

//把普通表单的数据放入map中

mapput(namename, value);

}else{

//非普通

String filename=itemgetName(); ////获取文件名的名

//获取服务器上upload的地址

String rootpath=getServletContext()getRealPath("upload");

//获取文件的路径

String newpath=rootpath+"\\"+filename;

//写入文件

itemwrite(new File(newpath));

liadd(filename);

}

}

using System;

using SystemCollections;

using SystemCollectionsGeneric;

using SystemIO;

using SystemLinq;

using SystemText;

using SystemThreadingTasks;

namespace ConsoleApplication1

{

    class Program

    {

        ArrayList Item = new ArrayList();  //动态数组保存文件名

        static void Main(string[] args)

        {

            Program pg = new Program(); 

            string[] except = new string[] { "exe"};

           

            pg Text(@"E:\text", except);

            for (int i = 0; i < pgItemCount; i++)

            {

                ConsoleWriteLine (pgItem[i]);

                ConsoleReadKey();

            }

        }

        public ArrayList Text(string path, string[] exception)

        {    int j = 0;

             

             DirectoryInfo search = new DirectoryInfo(path);   //

             //获取目录path下所有目录和子目录下的文件

             FileSystemInfo[] fsinfos = searchGetFileSystemInfos();

             //遍历目录下文件及其子目录下文件

             foreach (FileSystemInfo fsinfo in fsinfos)

             {

                 if (fsinfo is DirectoryInfo)     //判断是否为文件夹

                 {

                     DirectoryInfo dtinfo = new DirectoryInfo(fsinfoFullName);

                     FileInfo[] f = dtinfoGetFiles();//获取子目录下的文件

                     foreach (FileInfo file in f)

                     {

                         for (int i = 0; i < exceptionLength; i++)

                         {

                             if (fileNameContains(exception[i]) == false)

                             {

                                 

                                 ItemAdd (fileFullName);

                                 j++;

                             }

                         }

                     }

                 }

                 else

                 {                     

                         for (int i = 0; i < exceptionLength; i++)

                         {

                             if (fsinfoNameContains(exception[i]) == false)

                             {

                                 

                                 ItemAdd (fsinfoFullName);

                                 j++;

                             }

                         }

                     

                 }

             }

             

             return  Item ;

        }

    }

}

file是一种特殊的input,不能被赋值,也不能被javascript取值,只能随表单提交,而且随表单提交的也是file路径所指向的文件本身。

这是浏览器安全原因所限制的,如果可以取值和赋值的话,那么javascript就可以随意获取你电脑上的文件了,这是非常危险的

用commons-fileupload实现的上传文件同时提交form中的参数

public void doPost(>

以上就是关于c#写一个函数,读出某个文件夹下所有文件和子文件夹的路径,并把这些路径放到一个LIST里面全部的内容,包括:c#写一个函数,读出某个文件夹下所有文件和子文件夹的路径,并把这些路径放到一个LIST里面、JavaWeb下载文件,怎么获取文件下载完毕的状态、java request 怎么查上传文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9610339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存