怎样用java程序实现文件拷贝 现在有d盘的user\a\中有四个文件,d盘有my\b文件夹问:怎么把user\a\的所有文件都拷贝到my\b文件夹内d:\user\a文件夹内有a1,a2,a3,a4四个文件d:\my\b---求代码学习 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static void copyFile(String LaiYuanLuJing, String MuDiLuJing) { FileInputStream source; FileOutputStream target; try { File f1 = new File(LaiYuanLuJing); File f2 = new File(MuDiLuJing.substring(0,MuDiLuJing.lastIndexOf("/"))); if(!f2.exists()) { f2.mkdirs(); } f2 = new File(MuDiLuJing); source = new FileInputStream(f1); target = new FileOutputStream(f2);// BufferedInputStream bin = new BufferedInputStream(source);// BufferedOutputStream bout = new BufferedOutputStream(target); byte[] b=new byte[1024*5]; int data; while ( (data = source.read(b)) != -1) { target.write(b,0,data);// bout.write(data,0,data); } source.close(); target.close(); } catch (Exception ex) { System.out.print(ex.getMessage()); } } 给你个例子,自己研究吧import Java.io.*;public class jCOPY { public static void main(String args[]){ try { jCOPY j = new jCOPY(); j.CopyFile(new File(args[0]),new File(args[1])); } catch (Exception e) { e.printStackTrace(); } } public void CopyFile(File in, File out) throws Exception { FileInputStream fis = new FileInputStream(in); FileOutputStream fos = new FileOutputStream(out); byte[] buf = new byte[1024]; int i = 0; while((i=fis.read(buf))!=-1) { fos.write(buf, 0, i); } fis.close(); fos.close(); } } package filego;import java.io.*;public class MyFile { public void go() throws Exception { File file = new File("D:\\test\\source"); fileCopy(file); } public void fileCopy(File file) throws Exception { FileInputStream fis = null; FileOutputStream fos = null; File[] firstF = file.listFiles(); for (int j = 0; j < firstF.length; j++) { File[] subF = firstF[j].listFiles(); for (int i = 0; i < subF.length; i++) { fis = new FileInputStream(subF[i]); fos = new FileOutputStream("D:\\test\\target\\" + j+i + ".txt"); int byt; while ((byt = fis.read()) != -1) { fos.write(byt); } } } fis.close(); fos.close(); } public static void main(String[] args) throws Exception { new MyFile().go(); }} 5楼的代码是我写的,就是想得到test\\target文件夹的所有文件,基本满足我的要求,就是拷贝后的文件名不满意fos = new FileOutputStream("D:\\test\\target\\" + j+i + ".txt"); 就这一句有问题,文件名变成12.txt等等(不是我想要的)请问:其实我是想拷贝来的文件名与原来的文件名相同,请问怎么修改上面的代码 for (int i = 0; i < subF.length; i++) { String fileName = subF[i].getName();fis = new FileInputStream(subF[i]); fos = new FileOutputStream("D:\\test\\target\\" + fileName ); int byt; while ((byt = fis.read()) != -1) { fos.write(byt); } } 这里改一下就好了,呵呵 //把from文件夹中的内容拷贝到to文件夹中public class copyDirectiory { public static void main(String args[]) throws IOException { String url1="D:\\Java_prac\\from"; String url2="D:\\Java_prac\\to"; (new File(url2)).mkdirs(); File[] file=(new File(url1)).listFiles(); for(int i=0;i<file.length;i++){ if(file[i].isFile()) { FileInputStream input=new FileInputStream(file[i]); FileOutputStream output=new FileOutputStream(url2+"\\"+file[i].getName()); byte[] b=new byte[1024*5]; int len; while((len=input.read(b))!=-1){ output.write(b,0,len); } output.flush(); output.close(); input.close(); } if(file[i].isDirectory()) { copyDirectiory(url2+"/"+file[i].getName(),url1+"/"+file[i].getName()); } } } public static void copyDirectiory(String file1,String file2) throws IOException{ (new File(file1)).mkdirs(); File[] file=(new File(file2)).listFiles(); for(int i=0;i<file.length;i++) { if(file[i].isFile()) { FileInputStream input=new FileInputStream(file[i]); FileOutputStream output=new FileOutputStream(file1+"\\"+file[i].getName()); byte[] b=new byte[1024*5]; int len; while((len=input.read(b))!=-1) { output.write(b,0,len); } output.flush(); output.close(); input.close(); } if(file[i].isDirectory()) { copyDirectiory(file1+"\\"+file[i].getName(),file2+"\\"+file[i].getName()); } } } } 直接调用dos命令,无责任猜想,没验证,xcpoy也忘记怎么写了。Runtime r = Runtime.getRuntime();Process p = null;try { p = r.exec("cmd /C xcopy d:\\usr\\a\\ d:\\usr\\b\\ /E");} catch (Exception e) { e.printStackTrace();} package filego;import java.io.*;public class MyFile { public void go() throws Exception { File file = new File("D:\\159电影\\上传\\backup"); fileCopy(file); System.out.println(file.getName()); } public void fileCopy(File file) throws Exception { FileInputStream fis = null; FileOutputStream fos = null; File[] firstF = file.listFiles(); firstF[1].getName(); for (int j = 0; j < firstF.length; j++) { File[] subF = firstF[j].listFiles(); for (int i = 0; i < subF.length; i++) { fis = new FileInputStream(subF[i]); String st=subF[i].getName(); fos = new FileOutputStream("D:\\chongqing159fac\\spoon\\record\\"+st); int byt; while ((byt = fis.read()) != -1) { fos.write(byt); } } } fis.close(); fos.close(); } public static void main(String[] args) throws Exception { new MyFile().go(); }} 在大家的帮助下,终于写出需要的代码,但仍感觉不够完美,尤其是关闭流,有好的改进方式请与我联系/* * 1 本程序的作用是把指定文件夹下的所用文件(只是文件)都拷贝到另外的文件夹下 * 2 比如源文件夹下会有许多的文件和和文件夹,文件会套到深层的文件夹下,本程序就是把深层的文件全部拷贝出,放在目的文件的第一层 * 3 也可把这个文件夹下的所有语句拷贝出,放在单一目的文件下(allInOne.txt),去掉得备注即可 * */import java.io.*;public class ManyFileCopy { String source = "D:\\first\\"; String recort = "D:\\second\\"; FileInputStream fis = null; FileOutputStream fos = null; public void start() throws Exception { File file = new File(source); fileCopy(file); fis.close(); fos.close(); } public void fileCopy(File file) throws Exception { File[] subFile = file.listFiles(); for (int j = 0; j < subFile.length; j++) { if (subFile[j].isDirectory()) { fileCopy(subFile[j]); } if (subFile[j].isFile()) { fis = new FileInputStream(subFile[j]); String fileName = subFile[j].getName(); fos = new FileOutputStream(recort + fileName); //取消下句注释,可以把一个文件夹的文件都汇聚到allInOne.txt文件下 //fos = new FileOutputStream(recort + "allInOne.txt",true); int byt; while ((byt = fis.read()) != -1) { fos.write(byt); } } } } public static void main(String[] args) throws Exception { ManyFileCopy manyFileCopy=new ManyFileCopy(); manyFileCopy.start(); }} 关闭流try{...}catch(...){...}finally{ if(fis != null){ try{ fis.close(); }catch(Exception e){ fis = null; } } if(fos != null){ try{ fos.close(); }catch(Exception e){ fos = null; } }} 关于jcombobox的item选择事件的问题 对象的引用和对象本身各是什么意思啊? 请帮我翻译! Java学习路径三篇(一)工具篇 关于java applet的一个小问题 SWING和AWT学得特别烂 【求助】如何读取jar包外的配置文件 请问J2EE部分如果用网页做界面的话,涉及多线程部分吗? 连接到ORACLE9I,中文数据取出来是乱码?怎么办啊!!!!!!!!!! JSDK1.3.1在SUN的网站上下了90%,还有10%没下怎么办??THANK 新手问题麻烦大家看看~ 求助!如何读写另一台机器上的文件?
public static void copyFile(String LaiYuanLuJing, String MuDiLuJing)
{
FileInputStream source;
FileOutputStream target;
try
{
File f1 = new File(LaiYuanLuJing);
File f2 = new File(MuDiLuJing.substring(0,MuDiLuJing.lastIndexOf("/")));
if(!f2.exists())
{
f2.mkdirs();
}
f2 = new File(MuDiLuJing);
source = new FileInputStream(f1);
target = new FileOutputStream(f2);
// BufferedInputStream bin = new BufferedInputStream(source);
// BufferedOutputStream bout = new BufferedOutputStream(target);
byte[] b=new byte[1024*5];
int data;
while ( (data = source.read(b)) != -1)
{
target.write(b,0,data);
// bout.write(data,0,data);
}
source.close();
target.close();
}
catch (Exception ex)
{
System.out.print(ex.getMessage());
}
}
public static void main(String args[]){
try {
jCOPY j = new jCOPY(); j.CopyFile(new File(args[0]),new File(args[1]));
}
catch (Exception e) {
e.printStackTrace();
}
} public void CopyFile(File in, File out) throws Exception {
FileInputStream fis = new FileInputStream(in);
FileOutputStream fos = new FileOutputStream(out);
byte[] buf = new byte[1024];
int i = 0;
while((i=fis.read(buf))!=-1) {
fos.write(buf, 0, i);
}
fis.close();
fos.close();
}
}
package filego;import java.io.*;public class MyFile { public void go() throws Exception {
File file = new File("D:\\test\\source");
fileCopy(file); } public void fileCopy(File file) throws Exception {
FileInputStream fis = null;
FileOutputStream fos = null;
File[] firstF = file.listFiles();
for (int j = 0; j < firstF.length; j++) {
File[] subF = firstF[j].listFiles();
for (int i = 0; i < subF.length; i++) {
fis = new FileInputStream(subF[i]);
fos = new FileOutputStream("D:\\test\\target\\" + j+i + ".txt");
int byt;
while ((byt = fis.read()) != -1) {
fos.write(byt);
}
}
}
fis.close();
fos.close();
} public static void main(String[] args) throws Exception {
new MyFile().go();
}}
fos = new FileOutputStream("D:\\test\\target\\" + j+i + ".txt");
就这一句有问题,文件名变成12.txt等等(不是我想要的)请问:
其实我是想拷贝来的文件名与原来的文件名相同,请问怎么修改上面的代码
fis = new FileInputStream(subF[i]);
fos = new FileOutputStream("D:\\test\\target\\" + fileName );
int byt;
while ((byt = fis.read()) != -1) {
fos.write(byt);
} } 这里改一下就好了,呵呵
public class copyDirectiory {
public static void main(String args[]) throws IOException
{
String url1="D:\\Java_prac\\from";
String url2="D:\\Java_prac\\to";
(new File(url2)).mkdirs();
File[] file=(new File(url1)).listFiles();
for(int i=0;i<file.length;i++){
if(file[i].isFile())
{
FileInputStream input=new FileInputStream(file[i]);
FileOutputStream output=new FileOutputStream(url2+"\\"+file[i].getName());
byte[] b=new byte[1024*5];
int len;
while((len=input.read(b))!=-1){
output.write(b,0,len);
}
output.flush();
output.close();
input.close();
}
if(file[i].isDirectory())
{
copyDirectiory(url2+"/"+file[i].getName(),url1+"/"+file[i].getName());
}
}
}
public static void copyDirectiory(String file1,String file2) throws IOException
{
(new File(file1)).mkdirs();
File[] file=(new File(file2)).listFiles();
for(int i=0;i<file.length;i++)
{
if(file[i].isFile())
{
FileInputStream input=new FileInputStream(file[i]);
FileOutputStream output=new FileOutputStream(file1+"\\"+file[i].getName());
byte[] b=new byte[1024*5];
int len;
while((len=input.read(b))!=-1)
{
output.write(b,0,len);
}
output.flush();
output.close();
input.close();
}
if(file[i].isDirectory())
{
copyDirectiory(file1+"\\"+file[i].getName(),file2+"\\"+file[i].getName());
}
} }
}
Runtime r = Runtime.getRuntime();
Process p = null;
try {
p = r.exec("cmd /C xcopy d:\\usr\\a\\ d:\\usr\\b\\ /E");
} catch (Exception e) {
e.printStackTrace();
}
File file = new File("D:\\159电影\\上传\\backup");
fileCopy(file);
System.out.println(file.getName()); } public void fileCopy(File file) throws Exception {
FileInputStream fis = null;
FileOutputStream fos = null; File[] firstF = file.listFiles();
firstF[1].getName();
for (int j = 0; j < firstF.length; j++) {
File[] subF = firstF[j].listFiles();
for (int i = 0; i < subF.length; i++) {
fis = new FileInputStream(subF[i]);
String st=subF[i].getName();
fos = new FileOutputStream("D:\\chongqing159fac\\spoon\\record\\"+st);
int byt;
while ((byt = fis.read()) != -1) {
fos.write(byt);
} }
}
fis.close();
fos.close();
} public static void main(String[] args) throws Exception {
new MyFile().go();
}}
在大家的帮助下,终于写出需要的代码,但仍感觉不够完美,尤其是关闭流,有好的改进方式请与我联系
/*
* 1 本程序的作用是把指定文件夹下的所用文件(只是文件)都拷贝到另外的文件夹下
* 2 比如源文件夹下会有许多的文件和和文件夹,文件会套到深层的文件夹下,本程序就是把深层的文件全部拷贝出,放在目的文件的第一层
* 3 也可把这个文件夹下的所有语句拷贝出,放在单一目的文件下(allInOne.txt),去掉得备注即可
* */import java.io.*;public class ManyFileCopy { String source = "D:\\first\\";
String recort = "D:\\second\\";
FileInputStream fis = null;
FileOutputStream fos = null; public void start() throws Exception {
File file = new File(source);
fileCopy(file);
fis.close();
fos.close();
} public void fileCopy(File file) throws Exception {
File[] subFile = file.listFiles();
for (int j = 0; j < subFile.length; j++) { if (subFile[j].isDirectory()) {
fileCopy(subFile[j]);
} if (subFile[j].isFile()) {
fis = new FileInputStream(subFile[j]);
String fileName = subFile[j].getName();
fos = new FileOutputStream(recort + fileName);
//取消下句注释,可以把一个文件夹的文件都汇聚到allInOne.txt文件下
//fos = new FileOutputStream(recort + "allInOne.txt",true);
int byt;
while ((byt = fis.read()) != -1) {
fos.write(byt);
}
} } } public static void main(String[] args) throws Exception {
ManyFileCopy manyFileCopy=new ManyFileCopy();
manyFileCopy.start();
}}
try{...
}catch(...){...
}finally{
if(fis != null){
try{
fis.close();
}catch(Exception e){
fis = null;
}
}
if(fos != null){
try{
fos.close();
}catch(Exception e){
fos = null;
}
}
}