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 怎么查上传文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)