问题描述
关于Java实现文件夹的网络传输,我在网上搜索到可以用遍历,解压缩和Xml解析,但是都没有给出具体的实现方式,有谁曾经做过类似的东西吗?可以的话拿出来供大家学习一下吧!
解决方案
解决方案二:
没有做过相关方面的研究,是不是用zip流来实现的呢。期待高手?
解决方案三:
for循环if是文件夹就递归else传输
解决方案四:
你的上传和下载么
解决方案五:
我这有一个文件上传的例子,你可以参考一下。有结果要给我加分!!!packagetest;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.ServletInputStream;importjava.util.Dictionary;importjava.util.Hashtable;importjava.io.*;publicclassFileUpload{//定义变量,用来存储上传文件的名字,路径等privateStringsavePath,filepath,filename,contentType;//保存了用户在表单中输入数据的名字/值对privateDictionaryfields;//获得文件名字publicStringgetFilename(){returnfilename;}//获得上传文件的路径publicStringgetFilepath(){returnfilepath;}//设定上传文件的路径,如果没有设定就保存在服务器默认目录publicvoidsetSavePath(StringsavePath){this.savePath=savePath;}//得到文件类型publicStringgetContentType(){returncontentType;}publicStringgetFieldValue(StringfieldName){if(fields==null||fieldName==null)returnnull;return(String)fields.get(fieldName);}privatevoidsetFilename(Strings){if(s==null)return;intpos=s.indexOf("filename="");if(pos!=-1){filepath=s.substring(pos+10,s.length()-1);pos=filepath.lastIndexOf("\");if(pos!=-1)filename=filepath.substring(pos+1);elsefilename=filepath;}}privatevoidsetContentType(Strings){if(s==null)return;intpos=s.indexOf(":");if(pos!=-1)contentType=s.substring(pos+2,s.length());}publicvoiddoUpload(HttpServletRequestrequest)throwsIOException{ServletInputStreamin=request.getInputStream();byte[]line=newbyte[128];inti=in.readLine(line,0,128);if(i<3)return;intboundaryLength=i-2;Stringboundary=newString(line,0,boundaryLength);//-2丢弃换行字符fields=newHashtable();while(i!=-1){StringnewLine=newString(line,0,i);if(newLine.startsWith("Content-Disposition:form-data;name="")){if(newLine.indexOf("filename="")!=-1){setFilename(newString(line,0,i-2));if(filename==null)return;//文件内容i=in.readLine(line,0,128);setContentType(newString(line,0,i-2));i=in.readLine(line,0,128);//空行i=in.readLine(line,0,128);newLine=newString(line,0,i);PrintWriterpw=newPrintWriter(newBufferedWriter(newFileWriter((savePath==null?"":savePath)+filename)));while(i!=-1&&!newLine.startsWith(boundary)){//文件内容的最后一行包含换行字符//因此我们必须检查当前行是否是最//后一行i=in.readLine(line,0,128);if((i==boundaryLength+2||i==boundaryLength+4)&&(newString(line,0,i).startsWith(boundary)))pw.print(newLine.substring(0,newLine.length()-2));elsepw.print(newLine);newLine=newString(line,0,i);}pw.close();}else{//普通表单输入元素//获取输入元素名字intpos=newLine.indexOf("name="");StringfieldName=newLine.substring(pos+6,newLine.length()-3);i=in.readLine(line,0,128);i=in.readLine(line,0,128);newLine=newString(line,0,i);StringBufferfieldValue=newStringBuffer(128);while(i!=-1&&!newLine.startsWith(boundary)){//最后一行包含换行字符//因此我们必须检查当前行是否是最后一行i=in.readLine(line,0,128);if((i==boundaryLength+2||i==boundaryLength+4)&&(newString(line,0,i).startsWith(boundary)))fieldValue.append(newLine.substring(0,newLine.length()-2));elsefieldValue.append(newLine);newLine=newString(line,0,i);}fields.put(fieldName,fieldValue.toString());}}i=in.readLine(line,0,128);}}}
解决方案六:
我有完整代码,是自己实现的,可以加qq115194774