黑马程序员技术交流社区

标题: 疑惑??? 哪位帮我看看是怎么回事 [打印本页]

作者: 坚持不懈    时间: 2012-12-18 20:17
标题: 疑惑??? 哪位帮我看看是怎么回事
  1. import java.io.*;
  2. class Demo
  3. {
  4.         public static void main(String[] args)throws Exception
  5.         {
  6.                 if(args.length!=2)
  7.                 {
  8.                         System.out.println("语法命令不正确");
  9.                         System.exit(1);
  10.                 }
  11.                 File file1=new File(args[0]);
  12.                 if(file1.exists())//如果原文件存在
  13.                 {
  14.                         File file2=new File(args[1]);
  15.                         InputStream input=new FileInputStream(file1);
  16.                         OutputStream output=new FileOutputStream(file2);
  17.                         int temp=0;
  18.                         while((temp=input.read())!=0)
  19.                         {
  20.                                 output.write(temp);
  21.                         }
  22.                         input.close();
  23.                         output.close();
  24.                         System.out.println("文件拷贝完成");
  25.                 }
  26.         }
  27. }
复制代码
编译 直接提示语法命令不正确.  以下代码没有被执行?
作者: 黑马黄涛    时间: 2012-12-18 20:56
while((temp=input.read())!=-1)
                        {
                                output.write(temp);
                        }
作者: 黑马黄涛    时间: 2012-12-18 20:58
查看帮助文档咱们可以看到:
public int read()
         throws IOException
如果已到达文件末尾,则返回 -1。
所以刚刚你的程序肯定是个死循环的...因为他永远不可能等于0对不...

作者: 王中利    时间: 2012-12-18 21:20
package day11;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class Demo {
         
            public static void main(String[] args)throws Exception
         
                {
         
                        if(args.length!=2)
         
                        {
         
                                System.out.println("语法命令不正确");
         
                              //  System.exit(1);
                               // return;//这里 这两条语句没有什么影响,用哪个都没关系
         
                        }
       
                      
                        File file1=new File(args[0]);//这里的参数是自己输入进去的,必须是文件的路径名,必须存在文件名
                        
                        System.out.println(file1.getName());//这是我自己加上的,
                        if(file1.exists())//如果原文件存在
         
                        {
                               
                                File file2=new File(args[1]);
                                System.out.println(file2.getName());
                                InputStream input=new FileInputStream(args[0]);
                               
                                OutputStream output=new FileOutputStream(args[1]);
                               
                                int temp=0;
         
                                while((temp=input.read())!=-1)
         
                                {
         
                                        output.write(temp);
                                        output.flush();
         
                                }
                               
                                input.close();
         
                                output.close();
         
                                System.out.println("文件拷贝完成");
         
                        }
         
                }
         
        }

D:\myeclipseworkplace\workplace\day1\src\day11\1.txt D:\myeclipseworkplace\workplace\day1\src\day11\2.txt这是我输入的参数,运行很好,结果是
1.txt
2.txt
文件拷贝完成

文件必须是存在的,如果没有存在,会报异常,而你又把异常抛出去了
作者: 王中利    时间: 2012-12-18 21:31
还要判断一下文件是不是存在,可以调用file.creatNewFile()方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2