java IO问题:源文件一开始有内容,一运行程序源文件和目标文件都变成空的了,何解?
importjava.io.*;/*===========================*使用java完成复制文件操作**=======================...
import java.io.*;
/*===========================
* 使用java完成复制文件操作 *
* ==========================
* */
public class Copy {
//============主方法========================
public static void main(String args[])throws Exception{
if(args.length!=2){//==判断输入参数是否是两个==
System.out.println("你输入的格式有误,请重新输入。");
System.out.println("例如:java Copy 源文件路径名 目标文件路径名");
System.exit(1);//========系统退出=======
}
if(args[0].equals(args[1])){//==判断源文件、目的文件是否是同一个==
System.out.println("无法复制自身文件。");
System.exit(1);;//========系统退出=======
}
File file=new File(args[0]);//=========找到第一个文件==========
if(file.exists()){//=============文件存在==================
File file1=new File(args[1]);//==========找到第二个文件=========
if(!file1.exists()){
file1.createNewFile();
}
OutputStream output=new FileOutputStream(file);//===输出流===
InputStream input =new FileInputStream(file1);//===输入流===
int temp=0;//===============定义一个整数表示接受的内容=================
while((temp=input.read())!=-1){//=======表示还有数据=======
output.write(temp);//============写入数据=================
}
System.out.println("文件复制成功!");
input.close();
output.close();
}else{
System.out.println("源文件不存在!");
}
}
} 展开
/*===========================
* 使用java完成复制文件操作 *
* ==========================
* */
public class Copy {
//============主方法========================
public static void main(String args[])throws Exception{
if(args.length!=2){//==判断输入参数是否是两个==
System.out.println("你输入的格式有误,请重新输入。");
System.out.println("例如:java Copy 源文件路径名 目标文件路径名");
System.exit(1);//========系统退出=======
}
if(args[0].equals(args[1])){//==判断源文件、目的文件是否是同一个==
System.out.println("无法复制自身文件。");
System.exit(1);;//========系统退出=======
}
File file=new File(args[0]);//=========找到第一个文件==========
if(file.exists()){//=============文件存在==================
File file1=new File(args[1]);//==========找到第二个文件=========
if(!file1.exists()){
file1.createNewFile();
}
OutputStream output=new FileOutputStream(file);//===输出流===
InputStream input =new FileInputStream(file1);//===输入流===
int temp=0;//===============定义一个整数表示接受的内容=================
while((temp=input.read())!=-1){//=======表示还有数据=======
output.write(temp);//============写入数据=================
}
System.out.println("文件复制成功!");
input.close();
output.close();
}else{
System.out.println("源文件不存在!");
}
}
} 展开
2个回答
展开全部
你这个方法,1个错误个地方:
如楼上所说,正确的写法,输入流对应的是原文件,输出流对应的是复制目的文件。
不规范的地方2个:
1. java实际开发中,除非特殊需要,一般不允许自行抛出异常,谁发现,谁解决。最重要的是你这个程序,一旦前面出现找不到文件等异常,将不能执行close,会浪费内存。运行多了,会造成死机等,所以自己处理异常,吧close写在finally下。
2.尽管这是字节流的输入输出,但是养成finally下,输出流,强制刷入的好习惯。
如楼上所说,正确的写法,输入流对应的是原文件,输出流对应的是复制目的文件。
不规范的地方2个:
1. java实际开发中,除非特殊需要,一般不允许自行抛出异常,谁发现,谁解决。最重要的是你这个程序,一旦前面出现找不到文件等异常,将不能执行close,会浪费内存。运行多了,会造成死机等,所以自己处理异常,吧close写在finally下。
2.尽管这是字节流的输入输出,但是养成finally下,输出流,强制刷入的好习惯。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询