我是个初学者,我想设计一个程序,下面是一些思路。我要复制一个文件A,前提是我并不知道这个文件A是二进制还是ASCII码的文本文件,而且要求如果文件A是二进制则所复制得到的文件B也是二进制文件,若A是ASCII码的文本文件,则复制得到的B还是能打开的文本文件~我遇到的问题是读二进制文件要用二进制的流,读文本的要用字符流,怎么区分呢?说的有些罗索,为了能说情问题啦~谢谢各位

解决方案 »

  1.   

    不是这么复制的...
    复制文件的时候只要做字节数组处理就可以了....byte[] buf;字节是最底层的
         |-二进制编码
    byte-|
         |-字符编码
    这样看得懂吧
      

  2.   

    java copy或传输根本不用考虑是否是ASCII码的文本文件还是非ASCII码的其他文件
      

  3.   

    使用FileInputStream和FileOutputStream进行复制即可
      

  4.   

    你还没搞清楚
    不管你是字符还是二进制码
    他们都是基于字节的
    字节是所有数据的基础只要字节不变,你用字符编码来读取字节是不会改变的LZ应该去学一点底层的东西,学点基础的C吧
    其他不管你的文件是文本文件还是图片文件,在磁盘上都是以字节来保存的
    只是打开文件的时候,对字节的解释方法不一样而已
      

  5.   

    /**
     * 
     * @param filename 以有的文件(c:\a.doc)
     * @param copyto  要copy到的文件名称(d:\A.doc)
     * @throws IOException
     */
    public static void copyFile(String filename,String copyto)throws IOException{
    InputStream is=new FileInputStream(filename);
    OutputStream streamOut = new FileOutputStream(copyto);//定义输出流
    int byteRead = 0;
    byte[] buffer = new byte[8192];
    while ((byteRead = is.read(buffer, 0, 8192)) != -1) {
    streamOut.write(buffer, 0, byteRead);
    }
    streamOut.close();
    is.close();
    }
    就ok了