`
mp_juan
  • 浏览: 10759 次
  • 性别: Icon_minigender_1
  • 来自: 四川
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 文件拷贝后文件损坏

阅读更多

 

今天用java写了一个关于文件拷贝的小工具FileUtil.java

我用了一个方法:copyFile(File source,File destnation)

我发现拷贝压缩文件,exe等文件后,文件大小一样,可是压缩文件无法打开,exe无法执行了

代码如下:

 public static boolean copyFile(File source, File destnation) {
  boolean rs = false;
  InputStream is = null;
  int count = 0;
  OutputStream os = null;
  byte buffer[] = new byte[BUFFER_SIZE];
  try {
   if (source != null && destnation != null) {
    if (source.isFile()) {
     if (destnation.isDirectory()) {
      File temp = new File(destnation.getAbsolutePath()
        + SEPRATOR + source.getName());
      is = new FileInputStream(source);
      os = new FileOutputStream(temp);
      while (-1 != (count = is.read())) {
       is.read(buffer, 0, buffer.length);
       os.write(buffer, 0, buffer.length);
      }
     } else {
      is = new FileInputStream(source);
      os = new FileOutputStream(destnation);
      while (-1 != (count = is.read())) {
       is.read(buffer, 0, buffer.length);
       os.write(buffer, 0, buffer.length);
      }
     }
    }
    rs = true;
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   try {
    is.close();
    os.close();
   } catch (IOException e) {
    e.printStackTrace();
   }

  }
  return rs;
 }

各位有什么办法吗?我实在是找不原因

分享到:
评论
2 楼 mp_juan 2010-02-24  
找到原因了,在while循环时候没有将文件内容读入到缓冲数组中去
代码:

while (-1 != (count = is.read())) {
       is.read(buffer, 0, buffer.length);
       os.write(buffer, 0, buffer.length);
      }
应改为:

while (-1 != (count = is.read(buffer))) {
       is.read(buffer, 0, buffer.length);
       os.write(buffer, 0, buffer.length);
      }
1 楼 h819 2010-02-01  
用 commons 中的 io 包,文件操作非常简单

相关推荐

    java 局域网拷贝文件

    在Java编程环境中,实现局域网内的文件拷贝是一项常见的任务,尤其对于系统集成、数据共享或备份场景。本文将详细讲解如何利用Java技术来复制局域网内其他计算机上的文件,并讨论如何替换文件调用路径片段以适应不同...

    java图片复制打不开

    在探讨“Java图片复制打不开”的问题时,我们首先需要理解Java中文件操作的基本原理,尤其是如何读取和写入二进制数据,如图片文件。根据提供的代码片段,我们可以看到一个基本的文件复制过程,但该过程似乎存在一些...

    最全的SWT示例(绝对最全),上次文件损坏了,重传个

    下载后先看运行效果图,由于示例太多,图中只包含了部分效果,swtexamplessrc.rar中包含所有的示例代码,拷贝到swt工程下即可运行,每一个包下的带有Example结尾的java类是带有main函数的,如:GraphicsExample.java...

    电脑新插入U盘自动复制资料安装源码文件

    6. **文件复制**:在编程中,可以使用各种语言(如Python、C#、Java等)的文件操作API来实现文件复制。需要注意的是,复制大文件时要考虑效率,可能需要用到缓冲区或异步处理。 7. **目标位置**:复制的数据通常会...

    修复蓝光原盘文件目录的软件

    1. **文件系统分析**:软件会深入解析蓝光原盘的BD-Java(BD-J)或BDMV文件结构,检查其完整性。 2. **错误检测**:通过校验和或其他方法检测文件和目录的损坏情况。 3. **逻辑修复**:如果发现损坏的链接或丢失的...

    java-IO流学习使用教程

    因为在读取和写出过程中,字节与字符之间的转换可能导致数据丢失或错误,最终导致文件损坏。 6. **自定义字符数组的拷贝** 使用字符数组可以提高拷贝效率,避免频繁的系统调用。通过FileReader的read()方法将数据...

    java web 导入 excel

    - 对于读取Excel时的错误,如格式错误、文件损坏等,也需要捕获并给出反馈。 7. **性能优化**: - 大文件处理时,考虑使用SAX或者XSSF(内存效率更高)避免一次性加载整个文件到内存。 - 分批读取和处理数据,...

    JAVA项目在Tomcat下应用配置及问题总结.

    - **部署WAR包**: 将WAR包(例如`hzoa.war`)拷贝到Tomcat的`webapps`目录下。启动Tomcat后,会自动解压WAR包。若出现错误提示,可忽略并关闭Tomcat,然后删除原来的WAR包。 - **替换许可文件**: 将`license.xml`...

    Java异步技术原理和实践

    - **硬件故障**:如磁盘损坏或满载。 - **网络中断**:网络连接不稳定或断开。 - **程序bug**:代码中的错误或缺陷。 - **性能瓶颈**:某些组件处理速度过慢。 - **环境/配置变更**:运行环境或配置参数的变化。 - *...

    C#调用IDL报错.docx

    根据描述中的部分信息,“把破解文件重新拷贝覆盖”,这里指的是可能需要更新DLL文件版本或修复损坏的文件。 ### 六、总结 通过以上步骤,我们可以有效地解决C#调用IDL时因DLL未注册导致的错误。需要注意的是,在...

    网管教程 从入门到精通软件篇.txt

    JAR:Java档案文件(一种用于applet和相关文件的压缩文件) JAVA:Java源文件 JFF,JFIF,JIF:JPEG文件 JPE,JPEG,JPG:JPEG图形文件 JS:javascript源文件 JSP:HTML网页,其中包含有对一个Java servlet...

    2021Java大厂面试题——大厂真题之唯品会-Java大数据开发工程师.pdf

    ### Java大数据开发工程师面试知识点详解 #### 一、Kafka Message结构详解 Kafka消息(Message)是Kafka中非常核心的概念之一,它承载着所有传递的信息内容。一个Kafka消息由固定长度的Header和变长的消息体Body两...

    MD5校验工具源码

    1. **下载验证**:当你从互联网上下载文件后,可以使用MD5校验工具对比官方提供的MD5值,确保文件在传输过程中没有被篡改或损坏。 2. **拷贝检查**:当复制或移动大文件到另一台设备时,通过计算源文件和目标文件的...

    组态王常见问题的解决.doc

    若缺失或损坏,应从kingview路径下拷贝到发布路径。同时,确保IE已安装JAVA支持文件。 7. WEB发布后IE打开HTML文件无内容: 这可能是netkingview.cab文件大小为0K,需从kingview路径复制到发布路径。或者可能是...

    zoran.rar_DVD_Java_

    1. "build.img":这是一个镜像文件,通常包含操作系统、固件或者其他软件的完整拷贝,用于设备的更新。在DVD播放器的上下文中,这个文件可能包含了新的固件或软件更新,用户可能需要将其烧录到DVD上,然后在目标设备...

    CVS SVN VSS 对比 说明

    这种设计使得SVN在处理文件拷贝、移动和重命名等操作时更加灵活,因为它能够追踪这些操作的历史记录,保持文件之间的关系。此外,SVN支持目录的版本控制,使得文件的移动和重命名操作可以保留其历史信息,增强了版本...

    java C++ 文档

    2. 数组越界:访问数组超出边界可能导致数据损坏,甚至程序崩溃,使用安全的容器如`std::vector`能有效避免此问题。 3. 动态内存管理错误:忘记释放动态分配的内存,可能导致内存泄漏;反之,过早释放内存可能导致...

    android视频

    视频播放过程中可能会遇到各种问题,如文件损坏、网络中断、格式不支持等。开发者需要编写健壮的错误处理机制,捕获并适当地处理这些问题,同时使用Logcat或日志记录库进行调试。 综上所述,“android视频”示例...

    zip4j:从zip4j复制

    6. **高级功能**:Zip4j还提供了其他高级特性,如修复损坏的.zip文件、更新现有.zip文件、支持Unicode编码、以及处理自解压文件等。 7. **API使用示例**:Zip4j的API设计直观,易于使用。例如,要从一个已存在的....

Global site tag (gtag.js) - Google Analytics