`
longgangbai
  • 浏览: 7332480 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring中常用的IO工具类的学习

阅读更多

    在项目中如果有文件拷贝,读取等操作,如果项目中采用了Spring可以使用Spring的文件操作工具类FileCopyUtils ,如果没有引入Spring也好,如果项目中引入Commons-IOs可以采用文件操作类FileCopyUtils ,功能更多更强大。

  如果两者均没有引入,个人认为最好将Spring中的中FileCopyUtils 拷贝到项目中简单省事。

    在spring中的FileCopyUtils 和Apache的Commons-IO中的方法比较相似,功能相同,但是Spring中的FileCopyUtils 不是采用Commons-IO中文件操作类。spring采用JAVA JDK中IO自己定义的类并且不依赖他类Spring类。

 

public abstract class FileCopyUtils {

 public static final int BUFFER_SIZE = 4096;


 //---------------------------------------------------------------------
 // Copy methods for java.io.File
 //---------------------------------------------------------------------

 /**
  * Copy the contents of the given input File to the given output File.
  * @param in the file to copy from
  * @param out the file to copy to
  * @return the number of bytes copied
  * @throws IOException in case of I/O errors
  */
 public static int copy(File in, File out) throws IOException {
  Assert.notNull(in, "No input File specified");
  Assert.notNull(out, "No output File specified");
  return copy(new BufferedInputStream(new FileInputStream(in)),
      new BufferedOutputStream(new FileOutputStream(out)));
 }

 /**
  * Copy the contents of the given byte array to the given output File.
  * @param in the byte array to copy from
  * @param out the file to copy to
  * @throws IOException in case of I/O errors
  */
 public static void copy(byte[] in, File out) throws IOException {
  Assert.notNull(in, "No input byte array specified");
  Assert.notNull(out, "No output File specified");
  ByteArrayInputStream inStream = new ByteArrayInputStream(in);
  OutputStream outStream = new BufferedOutputStream(new FileOutputStream(out));
  copy(inStream, outStream);
 }

 /**
  * Copy the contents of the given input File into a new byte array.
  * @param in the file to copy from
  * @return the new byte array that has been copied to
  * @throws IOException in case of I/O errors
  */
 public static byte[] copyToByteArray(File in) throws IOException {
  Assert.notNull(in, "No input File specified");
  return copyToByteArray(new BufferedInputStream(new FileInputStream(in)));
 }


 //---------------------------------------------------------------------
 // Copy methods for java.io.InputStream / java.io.OutputStream
 //---------------------------------------------------------------------

 /**
  * Copy the contents of the given InputStream to the given OutputStream.
  * Closes both streams when done.
  * @param in the stream to copy from
  * @param out the stream to copy to
  * @return the number of bytes copied
  * @throws IOException in case of I/O errors
  */
 public static int copy(InputStream in, OutputStream out) throws IOException {
  Assert.notNull(in, "No InputStream specified");
  Assert.notNull(out, "No OutputStream specified");
  try {
   int byteCount = 0;
   byte[] buffer = new byte[BUFFER_SIZE];
   int bytesRead = -1;
   while ((bytesRead = in.read(buffer)) != -1) {
    out.write(buffer, 0, bytesRead);
    byteCount += bytesRead;
   }
   out.flush();
   return byteCount;
  }
  finally {
   try {
    in.close();
   }
   catch (IOException ex) {
   }
   try {
    out.close();
   }
   catch (IOException ex) {
   }
  }
 }

 /**
  * Copy the contents of the given byte array to the given OutputStream.
  * Closes the stream when done.
  * @param in the byte array to copy from
  * @param out the OutputStream to copy to
  * @throws IOException in case of I/O errors
  */
 public static void copy(byte[] in, OutputStream out) throws IOException {
  Assert.notNull(in, "No input byte array specified");
  Assert.notNull(out, "No OutputStream specified");
  try {
   out.write(in);
  }
  finally {
   try {
    out.close();
   }
   catch (IOException ex) {
   }
  }
 }

 /**
  * Copy the contents of the given InputStream into a new byte array.
  * Closes the stream when done.
  * @param in the stream to copy from
  * @return the new byte array that has been copied to
  * @throws IOException in case of I/O errors
  */
 public static byte[] copyToByteArray(InputStream in) throws IOException {
  ByteArrayOutputStream out = new ByteArrayOutputStream(BUFFER_SIZE);
  copy(in, out);
  return out.toByteArray();
 }


 //---------------------------------------------------------------------
 // Copy methods for java.io.Reader / java.io.Writer
 //---------------------------------------------------------------------

 /**
  * Copy the contents of the given Reader to the given Writer.
  * Closes both when done.
  * @param in the Reader to copy from
  * @param out the Writer to copy to
  * @return the number of characters copied
  * @throws IOException in case of I/O errors
  */
 public static int copy(Reader in, Writer out) throws IOException {
  Assert.notNull(in, "No Reader specified");
  Assert.notNull(out, "No Writer specified");
  try {
   int byteCount = 0;
   char[] buffer = new char[BUFFER_SIZE];
   int bytesRead = -1;
   while ((bytesRead = in.read(buffer)) != -1) {
    out.write(buffer, 0, bytesRead);
    byteCount += bytesRead;
   }
   out.flush();
   return byteCount;
  }
  finally {
   try {
    in.close();
   }
   catch (IOException ex) {
   }
   try {
    out.close();
   }
   catch (IOException ex) {
   }
  }
 }

 /**
  * Copy the contents of the given String to the given output Writer.
  * Closes the write when done.
  * @param in the String to copy from
  * @param out the Writer to copy to
  * @throws IOException in case of I/O errors
  */
 public static void copy(String in, Writer out) throws IOException {
  Assert.notNull(in, "No input String specified");
  Assert.notNull(out, "No Writer specified");
  try {
   out.write(in);
  }
  finally {
   try {
    out.close();
   }
   catch (IOException ex) {
   }
  }
 }

 /**
  * Copy the contents of the given Reader into a String.
  * Closes the reader when done.
  * @param in the reader to copy from
  * @return the String that has been copied to
  * @throws IOException in case of I/O errors
  */
 public static String copyToString(Reader in) throws IOException {
  StringWriter out = new StringWriter();
  copy(in, out);
  return out.toString();
 }

}

分享到:
评论

相关推荐

    java常用工具类

    以下是对标题和描述中提到的一些Java常用工具类的详细讲解: 1. **UUID类**: `java.util.UUID` 是用来生成全局唯一标识符的类。UUID(Universally Unique Identifier)是一种128位的数字,可以确保生成的ID在全球...

    28个java常用的工具类源码

    以上知识点涵盖了Java开发中的常用工具类及其核心功能,通过学习和理解这些源码,开发者可以更好地掌握Java编程的精髓,提高代码质量和效率。同时,理解这些工具类的实现也有助于应对面试中的技术问题。

    spring-socketio

    2. **配置Socket.IO服务器**:在Spring应用中,我们通常会创建一个WebSocketConfig类,配置WebSocket端点。Socket.IO需要在服务器端创建一个Server实例,并监听特定的端口。 3. **创建Socket.IO客户端**:在客户端...

    通过https://start.spring.io/生成的Spring Boot 1.5.17项目

    2. **自动配置(Auto Configuration)**:Spring Boot 会根据你的项目类路径中的jar依赖自动配置相关组件。例如,如果你引入了 `spring-boot-starter-web`,它将自动配置Tomcat作为嵌入式服务器,并且准备好了基本的...

    JAVA编程高级-工具类.pdf

    通过上述内容的学习,读者可以更加深入地理解Java中的高级工具类以及如何在实际编程中运用这些工具类来提高代码质量和效率。此外,对于初学者来说,掌握这些工具类的基本用法是非常有帮助的,可以帮助他们更快地编写...

    spring-boot学习笔记

    ### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...

    SpringCloud学习第一天,helloWorld

    在本篇【SpringCloud学习第一天,helloWorld】的教程中,我们将初步接触并了解Spring Cloud这一微服务框架,以及如何创建一个基本的“Hello, World”应用。首先,我们需要理解Spring Cloud的核心概念和作用。 ...

    Java工具类

    Java工具类是编程实践中常用的辅助模块,它们提供了一系列静态方法,可以方便地处理各种常见任务,从而提高开发效率。在Java领域,一个优秀的工具类库能够帮助开发者避免重复造轮子,专注于业务逻辑。以下是对标题和...

    struts2+spring3.0+mybatis3.0.4集成的邮件发送实例(可上传附件)

    在生成HTML表格方面,`CreateHtmlTable`可能是用于生成邮件正文的HTML代码的工具类。这通常涉及字符串拼接或使用模板引擎,如FreeMarker或Velocity,来生成动态内容。 至于文件上传,Java Servlet API提供了一种...

    Spring5.0.2 jar包

    1. **spring-core-5.0.2.RELEASE-javadoc.jar**:这是Spring框架的基础,提供了核心工具类和依赖注入(DI)的支持。它包含了Bean工厂,负责创建和管理对象,以及AOP(面向切面编程)的基础。 2. **spring-beans-...

    梦之都辛星Spring4.x参考资料

    - 构建工具:教程中未涉及Maven或Gradle等构建工具的使用,可能需要读者自行了解和补充相关知识。 6. 官方网站和交流群 为了获取更多资料或进行技术交流,提供了梦之都的官方网站地址,可以通过访问***获取更多...

    Java常用工具类,字符串、日期、jdbc、xml解析等等

    以上只是部分Java工具类的概述,实际开发中还有许多其他工具,如集合操作的工具类、IO流的工具类、网络通信的工具类等。这些工具类大大简化了代码编写,提高了代码的可读性和可维护性。不断学习和熟练掌握这些工具类...

    springcoud的java基础篇学习资料

    在Spring Cloud的学习过程中,Java基础知识是必不可少的一部分。Java作为Spring Cloud的基础语言,其核心概念和技术对理解Spring Cloud的实现机制至关重要。以下将详细介绍Java在Spring Cloud中的应用以及相关的知识...

    spring绝佳入门教程.pdf

    Spring框架是Java开发中最常用的轻量级框架之一,它以其模块化、易用性和灵活性而闻名。本教程“Spring绝佳入门教程.pdf”旨在为初学者提供一个全面且深入的Spring框架学习路径,帮助他们快速掌握Spring的核心概念和...

    Spring Boot 集成 MinIO(分布式对象存储系统)

    在手写MinIO 工具类的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。 适合人群:具备一定编程基础,工作1-3年的研发人员...

    最新版spring-framework-4.3.19.RELEASE-dist 完整包

    1. **spring-core**:Spring的核心模块,提供了依赖注入(DI)和核心工具类。 2. **spring-beans**:管理bean的创建和配置,实现了DI。 3. **spring-context**:扩展了core模块,提供了应用上下文,使Spring能够管理...

    org.springframework.core.jar

    `org.springframework.util`则包含了一系列通用的工具类,如对象处理、集合操作、字符串处理等,极大地提升了开发效率。 2. **资源管理**:`org.springframework.core.io`包定义了资源接口,统一了文件、URL、输入/...

    spring-framework-5.0.2.RELEASE官方完整包加官方文档

    Spring Framework 5.0.2.RELEASE 是一个重要的版本,它是Java开发中广泛使用的轻量级框架,尤其在企业级应用开发中占据了核心地位。这个官方完整包包含了Spring框架的所有组件,以及对应的官方文档,为开发者提供了...

    spring osgi相关资源

    Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的一种技术,它...通过学习和掌握Spring DM Server的使用以及Spring OSGi的相关库,开发者可以更好地在OSGi环境中构建和管理Spring应用。

    java基础学习笔记 java整合技术 java工具类.zip

    这份“java基础学习笔记 java整合技术 java工具类.zip”压缩包显然包含了一系列与Java相关的学习资料,特别是关于基础、整合技术和工具类的深度探讨。下面我们将深入解析这些主题。 首先,Java基础是学习Java的起点...

Global site tag (gtag.js) - Google Analytics