参考代码如下:
import java.io.*;
/**
* 复制文件夹或文件夹
*/
public class CopyDirectory {
// 源文件夹
static String url1 = "f:/photos";
// 目标文件夹
static String url2 = "d:/tempPhotos";
public static void main(String args[]) throws IOException {
// 创建目标文件夹
(new File(url2)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(url1)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 复制文件
File(file[i],new File(url2+file[i].getName()));
}
if (file[i].isDirectory()) {
// 复制目录
String sourceDir=url1+File.separator+file[i].getName();
String targetDir=url2+File.separator+file[i].getName();
Directiory(sourceDir, targetDir);
}
}
}
// 复制文件
public static void File(File sourceFile,File targetFile)
throws IOException{
// 新建文件输入流并对它进行缓冲
FileInputStream input = new FileInputStream(sourceFile);
BufferedInputStream inBuff=new BufferedInputStream(input);
// 新建文件输出流并对它进行缓冲
FileOutputStream output = new FileOutputStream(targetFile);
BufferedOutputStream outBuff=new BufferedOutputStream(output);
// 缓冲数组
byte[] b = new byte[1024 * 5];
int len;
while ((len =inBuff.read(b)) != -1) {
outBuff.write(b, 0, len);
}
// 刷新此缓冲的输出流
outBuff.flush();
//关闭流
inBuff.close();
outBuff.close();
output.close();
input.close();
}
// 复制文件夹
public static void Directiory(String sourceDir, String targetDir)
throws IOException {
// 新建目标目录
(new File(targetDir)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile=file[i];
// 目标文件
File targetFile=new
File(new File(targetDir).getAbsolutePath()
+File.separator+file[i].getName());
File(sourceFile,targetFile);
}
if (file[i].isDirectory()) {
// 准备复制的源文件夹
String dir1=sourceDir + "/" + file[i].getName();
// 准备复制的目标文件夹
String dir2=targetDir + "/"+ file[i].getName();
Directiory(dir1, dir2);
}
}
}
}
⑵ java中怎么把文件上传到服务器的指定路径
文件从本地到服务器的功能,其实是为了解决目前浏览器不支持获取本地文件全路径。不得已而想到上传到服务器的固定目录,从而方便项目获取文件,进而使程序支持EXCEL批量导入数据。
java中文件上传到服务器的指定路径的代码:
在前台界面中输入:
<form method="post" enctype="multipart/form-data" action="../manage/excelImport.do">
请选文件:<input type="file" name="excelFile">
<input type="submit" value="导入" onclick="return impExcel();"/>
</form>
action中获取前台传来数据并保存
/**
* excel 导入文件
* @return
* @throws IOException
*/
@RequestMapping("/usermanager/excelImport.do")
public String excelImport(
String filePath,
MultipartFile excelFile,HttpServletRequest request) throws IOException{
log.info("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );
if (excelFile != null){
String filename=excelFile.getOriginalFilename();
String a=request.getRealPath("u/cms/www/201509");
SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//保存到服务器的路径
}
log.info("<<<<<<action:{} Method:{} end>>>>>>","usermanager","excelImport" );
return "";
}
/**
* 将MultipartFile转化为file并保存到服务器上的某地
*/
public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException
{
FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);
System.out.println("------------"+path + "/"+ savefile);
byte[] buffer =new byte[1024*1024];
int bytesum = 0;
int byteread = 0;
while ((byteread=stream.read(buffer))!=-1)
{
bytesum+=byteread;
fs.write(buffer,0,byteread);
fs.flush();
}
fs.close();
stream.close();
}
⑶ java上传图片到服务器指定路径
privateFilemyFile;//文件
;//类型
privateStringmyFileFileName;//文件名
//。。。。getXXX()setXXX()方法
//输入流
InputStreamis=newFileInputStream(myFile);
//设定文件路径
StringphotoPath=ServletActionContext.getServletContext()
.getRealPath("/user/photo/");
FilefilePhotoPath=newFile(photoPath);
//判断这个路径是否存在,如果不存在创建这个路径
if(!filePhotoPath.isDirectory()){
filePhotoPath.mkdir();
}
Stringextension=FilenameUtils.getExtension(this
.getMyFileFileName());//后缀名比如jpg
Stringfilename=UUID.randomUUID().toString()+"."+extension;
//目标文件
Filetofile=newFile(photoPath,filename);
//输出流
OutputStreamos=newFileOutputStream(tofile);
byte[]buffer=newbyte[1024];
intlength=0;
while((length=is.read(buffer))>0){
os.write(buffer,0,length);
}
//关闭输入流
is.close();
//关闭输出流
os.close();
⑷ 在Java项目中上传图片时如何使上传的图片自动保存到指定路径
用struts也可以实现 多文件上传
下面是我写的代码,
参数中有要保存的目录
作为参考!
/*文件目录*/
public static String [] fileArray={
"logo.png",
"index.swf",
"OEMInfo.txt",
"favicon.ico"};
/**
* @author Caoshun
* @see 接收并保存文件
* */
public static void receiveAndSaveAllFileByPath(ActionForm form,String rootPath1,String rootPath2){
String fileName="";
//获取表单中的文件资源
Hashtable<Object, Object> files = form.getMultipartRequestHandler().getFileElements();
//遍历文件,并且循环保存
//当前处理文件序号
int file_num=1;
for (Enumeration<Object> e = files.keys(); e.hasMoreElements();) {
/*根据处理的当前文件下标,确定文件名*/
fileName=fileArray[file_num-1];
FormFile file = (FormFile) files.get((String) e.nextElement());
if (file != null && file.getFileSize() > 0) {
try {
//使用formfile.getInputStream()来获取一个文件的输入流进行保存。
//文件名
//String fileName = file.getFileName();
//System.out.println("debug in AddEnterpriceAction.java on line 152 fileName is : "+fileName);
//文件大小
//int fileSize = file.getFileSize();
//文件流
InputStream is = file.getInputStream();
//将输入流保存到文件
//String rootPath = this.servlet.getServletContext().getRealPath("files");
//往cn中写入
File rf = new File(rootPath1);
FileOutputStream fos = null;
fos = new FileOutputStream(new File(rf, fileName));
byte[] b = new byte[10240];
int real = 0;
real = is.read(b);
while (real > 0) {
fos.write(b, 0, real);
real = is.read(b);
}
//往en中写入
File rf2 = new File(rootPath2);
InputStream is2 = file.getInputStream();
FileOutputStream fos2 = null;
fos2 = new FileOutputStream(new File(rf2, fileName));
byte[] b2 = new byte[10240];
int real2 = 0;
real2 = is2.read(b2);
while (real2 > 0) {
fos2.write(b2, 0, real2);
real2 = is2.read(b2);
}
//关闭文件流
fos.close();
is.close();
fos2.close();
is2.close();
} catch (RuntimeException e1) {
e1.printStackTrace();
} catch (Exception ee) {
ee.printStackTrace();
}
file.destroy();
}
file_num++;
}
}
⑸ java 将浏览的图片上传到一个指定路径的目录中..
//新建一个Smartupload对象
SmartUpload su=new SmartUpload();
//上传初始化
su.initialize(pageContext);
//设定上传限度
//1.限定每个上传文件的最大长度
//su.setMaxFileSize(100000);
//2.限制总上传数据的长度。
//su.setTotalMaxFileSize(20000);
//3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
//su.setAllowFilesList("doc,text");
//4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件或没有扩展名的文件
//su.setDeniedDilesList("exe,bat,jsp,html,htm,,");
//上传文件
su.upload();
//将上传文件全部保存到指定目录
int count=su.save("/upload");
out.println(count+"个上传文件成功!<br>");
//利用Request对象获取参数之值
out.println("test="+su.getRequest().getParameter("test")+"<br><br>");
//逐一提取上传文件信息,同时可保存文件。
for(int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File file=su.getFiles().getFile(i);
//若文件不存在则继续
if(file.isMissing())
continue;
//显示当前文件信息
out.println("<table border=1>");
out.println("<tr><td>表单项名(FiledName)</td><td>"+file.getFieldName()+"</tr></tr>");
out.println("<tr><td>文件长度(Size)</td><td>"+file.getSize()+"</td><td>");
out.println("<tr><td>文件名(FileName)</td><td>"+file.getFileName()+"</tr></tr>");
out.println("<tr><td>文件扩展名(FiledExt)</td><td>"+file.getFileExt()+"</tr></tr>");
out.println("<tr><td>文件全名(FiledPathName)</td><td>"+file.getFilePathName()+"</tr></tr>");
out.println("</table><br>");
//将文件另存
//file.saveAs("/upload/"+myFile.getFileName());
//另存到以web应用程序的根目录为文件根目录的目录下
//file.saveAs("/upload/"+myFile.getFileName(),su.SAVE_VIRTUAL);
//另存到操作系统的根目录为文件根目录的目录下
//file.safeAs("c://temp//"+myFile.getFileName(),su.SAVE_PHYSICAL);
}
只用修改相应的路径 祝你好运!!!
⑹ java中怎么把文件上传到服务器的指定路径
Stringrealpath=ServletActionContext.getServletContext().getRealPath("/upload");//获取服务器路径
String[]targetFileName=uploadFileName;
for(inti=0;i<upload.length;i++){
Filetarget=newFile(realpath,targetFileName[i]);
FileUtils.File(upload[i],target);
//这是一个文件复制类()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类
}
其中privateFile[]upload;//实际上传文件
privateString[]uploadContentType;//文件的内容类型
privateString[]uploadFileName;//上传文件名
这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法!