Commons IO -- IOUtils

java-Apache Commons IO Google的guava对Java的IO操作进行了一定封装,但是它更偏向于集合、并发和缓存,在实际项目中,我非常喜欢guava,同时我也非常喜欢Apache的一个工具包org.apache.commons.io,这两个工具包提供非常强大的工具能力,能够简化代码逻辑,提高开发效率和质量,是每个Java程序员都应该掌握的工具包.Apache Commons IO是Apache基金会创建并维护的Java函 阅读详情

 IOUtils是apache基金会下面的一个子项目,提供了对于IO流操作的进一步封装,让我们可以更加方便的对IO流进行操作。

       IOUtils的下载地址是:

         http://commons.apache.org/proper/commons-io/download_io.cgi

         IOUtils的api帮助文档地址:

         http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/IOUtils.html


打开IOUtils的api文档,我们发现他的方法大部分都是重载的。所以,我们理解他的方法并不是难事。因此,对于他方法的用法总结如下:

         buffer方法:将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小。

         closeQueitly方法:关闭流

         contentEquals方法:比较两个流中的内容是否一致

         copy方法:将输入流中的内容拷贝到输出流中,并可以指定字符编码。

         copyLarge方法:将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝。

         lineIterator方法:返回可以迭代每一行内容的迭代器

         read方法:将输入流中的部分内容读入到字节数组中

         readFully方法:将输入流中的所有内容读入到字节数组 中

         readLine方法:读入输入流内容中的一行

         toBufferedInputStream,toBufferedReader:将输入转为带缓存的输入流

         toByteArray,toCharArray:将输入流的内容转为字节数组、字符数组。

         toString:将输入流或数组中的内容转化为字符串

         write方法:向流里面写入内容

         writeLine方法:向流里面写入一行内容


IOUtils流操作的相关方法

  • copy:这个方法可以拷贝流,算是这个工具类中使用最多的方法了。支持多种数据间的拷贝。copy内部使用的其实还是copyLarge方法。因为copy能拷贝Integer.MAX_VALUE的字节数据,即2^31-1。
copy(inputstream,outputstream)
copy(inputstream,writer)
copy(inputstream,writer,encoding)
copy(reader,outputstream)
copy(reader,writer)
copy(reader,writer,encoding)
  • copyLarge:这个方法适合拷贝较大的数据流,比如2G以上。
copyLarge(reader,writer) 默认会用1024*4的buffer来读取
copyLarge(reader,writer,buffer)
  • 获取输入流
//通过文本获取输入流 , 可以指定编码格式
InputStream toInputStream(final String input, final Charset encoding)

InputStream toInputStream(final String input, final String encoding)

//获取一个缓冲输入流,默认缓冲大小 1KB
InputStream toBufferedInputStream(final InputStream input)  

//获取一个指定缓冲流的大小的输入流
InputStream toBufferedInputStream(final InputStream input, int size)

//把流的全部内容放在另一个流中
BufferedReader toBufferedReader(final Reader reader)

//把流的全部内容放在另一个流中
BufferedReader toBufferedReader(final Reader reader, int size)
  • 获取输入流里面的内容
// 输入流 --》 字符串
String toString(final InputStream input, final Charset encoding)

// 输入流 --》 字符串
String toString(final InputStream input, final String encoding)

// 字符输入流 --》 字符串
String toString(final Reader input)

// 字符数组 --》 字符串
String toString(final byte[] input, final String encoding)

//输入流 --》 字符数组
byte[] toByteArray(final InputStream input)

//输入流 --》 字符数组
byte[] toByteArray(final Reader input, final Charset encoding)

//输入流 --》 字符数组
byte[] toByteArray(final Reader input, final String encoding) 

//URL   --》 字符数组
byte[] toByteArray(final URI uri)

// URL  --》 字符串
String toString(final URL url, final Charset encoding)

// URL  --》 字符串
String toString(final URL url, final String encoding)

// URLConnection --》 字符串
byte[] toByteArray(final URLConnection urlConn)
  • 字符串读写
List<String> readLines(InputStream input) 

List<String> readLines(InputStream input, final Charset encoding) 

List<String> readLines(InputStream input, final String encoding)

List<String> readLines(Reader input)

void writeLines(Collection<?> lines, String lineEnding, OutputStream output)

void writeLines(Collection<?> lines, String lineEnding, OutputStream output, Charset encoding)

void writeLines(Collection<?> lines, String lineEnding, OutputStream output, final encoding)

void writeLines(Collection<?> lines, String lineEnding,Writer writer)

小例子:

public void readLinesTest(){
       try{
           InputStream is = new FileInputStream("D://test1.txt");
           List<String> lines = IOUtils.readLines(is);
           for(String line : lines){
               System.out.println(line);
           }
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
   

结果:

hello
world
  • write:这个方法可以把数据写入到输出流中
write(byte[] data, OutputStream output)
write(byte[] data, Writer output)
write(byte[] data, Writer output, Charset encoding)
write(byte[] data, Writer output, String encoding)

write(char[] data, OutputStream output)
write(char[] data, OutputStream output, Charset encoding)
write(char[] data, OutputStream output, String encoding)
write(char[] data, Writer output)

write(CharSequence data, OutputStream output)
write(CharSequence data, OutputStream output, Charset encoding)
write(CharSequence data, OutputStream output, String encoding)
write(CharSequence data, Writer output)

write(StringBuffer data, OutputStream output)
write(StringBuffer data, OutputStream output, String encoding)
write(StringBuffer data, Writer output)

write(String data, OutputStream output)
write(String data, OutputStream output, Charset encoding)
write(String data, OutputStream output, String encoding)
write(String data, Writer output)
  • read:从一个流中读取内容
read(inputstream,byte[])
read(inputstream,byte[],offset,length) 
//offset是buffer的偏移值,length是读取的长度

read(reader,char[])
read(reader,char[],offset,length)

下例子:

public void readTest(){
      try{
          byte[] bytes = new byte[4];
          InputStream is = IOUtils.toInputStream("hello world");
          IOUtils.read(is, bytes);
          System.out.println(new String(bytes));

          bytes = new byte[10];
          is = IOUtils.toInputStream("hello world");
          IOUtils.read(is, bytes, 2, 4);
          System.out.println(new String(bytes));
      } catch (IOException e) {
          e.printStackTrace();
      }
  }

  
  • readFully:这个方法会读取指定长度的流,如果读取的长度不够,就会抛出异常
readFully(inputstream,byte[])
readFully(inputstream,byte[],offset,length)
readFully(reader,charp[])
readFully(reader,char[],offset,length)

小例子:

public void readFullyTest(){
      byte[] bytes = new byte[4];
      InputStream is  = IOUtils.toInputStream("hello world");
      try {
          IOUtils.readFully(is,bytes);
          System.out.println(new String(bytes));
      } catch (IOException e) {
          e.printStackTrace();
      }
  }
  

输出:hell
报出异常:

java.io.EOFException: Length to read: 20 actual: 11
    at org.apache.commons.io.IOUtils.readFully(IOUtils.java:2539)
    at org.apache.commons.io.IOUtils.readFully(IOUtils.java:2558)
    at test.java.IOUtilsTest.readFullyTest(IOUtilsTest.java:22)
    ...
    
  • contentEquals:比较两个流是否相等
contentEquals(InputStream input1, InputStream input2)
contentEquals(Reader input1, Reader input2)
  • contentEqualsIgnoreEOL:比较两个流,忽略换行符
contentEqualsIgnoreEOL(Reader input1, Reader input2)
  • skip:这个方法用于跳过指定长度的流
long skip(inputstream,skip_length)
long skip(ReadableByteChannel,skip_length)
long skip(reader,skip_length)
  • skipFully:这个方法类似skip,只是如果忽略的长度大于现有的长度,就会抛出异常。
skipFully(inputstream,toSkip)
skipFully(readableByteChannel,toSkip)
skipFully(inputstream,toSkip)

小例子:

public void skipFullyTest(){
    InputStream is = IOUtils.toInputStream("hello world");
    try {
        IOUtils.skipFully(is,30);
        System.out.println(IOUtils.toString(is,"utf-8"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
  • ineIterator:读取流,返回迭代器
LineIterator lineIterator(InputStream input, Charset encoding)
LineIterator lineIterator(InputStream input, String encoding)
LineIterator lineIterator(Reader reader)
  • close:关闭流

//关闭 URLConnection 
void close(final URLConnection conn)

//closeQuietly 忽略nulls和异常,关闭某个流
void closeQuietly(final Reader input)

void closeQuietly(final Writer output)

void closeQuietly(final InputStream input)

void closeQuietly(final OutputStream output)

void closeQuietly(final Socket sock)

void closeQuietly(final ServerSocket sock)
  • 小例子1

package com.app;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;

public class A8 {

    public static void main(String[] args) {
        
        String meString = "哈哈哈哈,下班了,hello" ;

        try {
            
            InputStream inputStream = IOUtils.toInputStream( meString, "utf-8" ) ;
            String mes = IOUtils.toString( inputStream , "utf-8" ) ;
            System.out.println( mes );
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
                                   

效果:

哈哈哈哈,下班了,hello
  • 小例子2 : 模拟了http 请求
package com.app;
import java.io.IOException;
import java.net.URL;

import org.apache.commons.io.IOUtils;

public class A8 {

    public static void main(String[] args) {

        String meString = "http://www.baidu.com" ;

        try {
            //模拟了http 请求
            String mes = IOUtils.toString( new URL( meString ) , "utf-8") ;
            System.out.println( mes );

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果:
这里写图片描述

Unity+ARFoundation 探坑之路 前两天想要上手Unity来AR方面的项目东东 ,探索过程中出现了各种各样的问题,现在将这个过程中遇到的各种各样问题梳理一下,希望后来者能开开心心上手Unity+AR。 注意:这是一篇踩坑博客,具体搭建还请自行百度。 一、ARFoundation or ARCore or ARKit Unity作为一个平台,不直接提供XR(包括VR、AR和MR)的开发包,这时就需要其他公司提供各种各样的SDK工具包... 阅读详情

相关推荐

STM32掉电保存配置参数技巧

本文介绍了使用STM32内置备份寄存器(BKP)实现掉电保存配置参数的方法。相比外接EEPROM或Flash,备份寄存器无需外设但存储容量有限,需通过VBAT引脚连接纽扣电池供电。文章详细说明了初始化步骤,包括使能PWR时钟、允许访问备份寄存器等操作,并提供了RTC初始化的代码示例。同时介绍了HAL库中读写备份寄存器的函数使用方法,包括HAL_RTCEx_BKUPWrite和HAL_RTCEx_BKUPRead函数的具体参数和调用示例。该方法适用于需要小容量数据掉电保存的应用场景。

hanhanhan233的博客 946

Java常用类(四):IOUtils类

1. 什么是IOUtils类? 1.1 Common IO 是一个工具库,用来帮助开发IO功能. 包含了:IOUtils的使用,FileUtils的使用,FilenameUtils的使用 1.2 添加maven依赖: <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6&...

sulia1234567890的博客 1万+

PostgreSQL 超详细安装与使用教程:从入门到实战

本文将详细介绍PostgreSQL数据库的安装配置与基础使用。首先从Windows系统安装入手,分步骤讲解17.5版本的安装流程、环境变量配置及服务启动验证。接着重点介绍了pgAdmin4图形化管理工具的安装与使用,包括界面语言设置、数据库连接、创建与管理数据库等操作,同时对比了可视化操作与SQL命令两种方式。最后梳理了PgSQL基础语法,涵盖表的创建、增删改查操作、约束管理等内容,为初学者提供了完整的PostgreSQL入门指南。文章兼顾理论知识与实际操作,既适合数据库新手学习,也可作为开发人员的快速参考

gtf212的博客 1万+

常用工具类commons-io的学习使用

commons-io的学习使用

weixin_53998054的博客 1万+

​基于stm32的智能空气加湿器设计(含源代码和Proteus仿真)

课程设计分享

LoongSTUDIO的博客 2925

UNSW-NB15数据集:网络流量分析与恶意攻击检测实战指南

本文提供了UNSW-NB15数据集在网络流量分析与恶意攻击检测领域的实战指南。详细介绍了该数据集的构成、核心特征解析、特征工程处理、机器学习模型训练与评估方法,并探讨了模型部署及持续优化的挑战与思路,帮助读者构建高效的网络攻击检测系统。

weixin_29193359的博客 258

commons-io程序库使用

commons-io程序库使用 commons-io库是帮助开发IO功能的实用程序库,主要包括IOUtils工具类、FileUtils工具类、FilenameUtils工具类、EndianUtils工具类、FileSystemUtils工具类; IOUtils:是使用最频繁的工具类,主要提供读、写、复制、关闭流操作 FileUtils:提供基于JDK文件类的操作。包括阅读、写作、复制、比较和...

OceanSky的专栏 3255

超分算法 SwinIR: Image Restoration Using Swin Transformer

这篇文章结构比较简单,如果看过Swin-Transformer的话就没什么难点了。作者引入Swin-T结构应用于低级视觉任务,包括图像超分辨率重建、图像去噪、图像压缩伪影去除。网络由一个浅层特征提取模块、深层特征提取模块、重建模块构成。重建模块对不同的任务使用不同的结构。浅层特征提取就是一个3×3的卷积层。深层特征提取是k个RSTB块和一个卷积层构成。RSTB(Res- SwinIR: Image Restoration Using Swin Transformer[ICCV 2021]Abstract1.

qq_45122568的博客 1万+

【Java】工具包(Commons-io)

但是在以后我们会用到很多很多别人写好的代码,因此在正式使用的第一步是:在项目中新建一个文件夹:lib,这个文件夹以后去专门存放第三方jar包。中其实就是别人写好的各种各样的类,如果你想要使用这些类中的方法,是不能直接用的,而是需要先将别人的代码导入到我们自己的项目中。这个组织有很多很多项目,现在在世界各地被广泛的使用,这些开源的项目为Java的快速发展提供了不可磨灭的贡献。淘汰了,它也会出现其他的替代品,但是只要基础扎实了,这些替代品学起来也是非常简单的。双击打开,是可以将jar包展开,看见里面的内容。

qq_39921135的博客 3518

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

statistics+insight+vista+power 527

C++面向对象编程-继承与派生练习题

2、共同派生类 3、人员类Person的派生(虚基类的使用)

编程小鹏的博客 1191

深入解析 Apache Commons IO:IOUtils 工具类

Apache Commons IO库中的IOUtils类提供了强大的I/O操作工具,可显著简化Java开发中的输入/输出处理。该工具类包含读取流为字符串或字节数组、高效流复制、按行读取、内容比较等八大核心功能,支持自动资源管理和编码安全。IOUtils适用于多种场景,如API测试模拟请求体、文件内容比较、大数据流处理等。通过静态方法调用,开发者可以避免编写重复代码,同时确保线程安全和异常处理。虽然早期版本的静默关闭方法已被弃用,推荐使用try-with-resources替代

小李同学的博客 1215

Vue 网络处理 - axios 异步请求的使用,请求响应拦截器(最佳实践)

axios 用来在前端页面发起一个异步请求,请求之后页面不动,响应回来刷新局部.1.为什么不使用 ajax 呢?官方:在 jQuery 中推荐使用 ajax 技术, Vue 里面不推荐使用 jQuery 框架,因此 Vue 更推荐使用 axiox 异步请求库(axios并不是 vue 官方库).2.axios 特性可以从浏览器中创建 XMLHttpRequests可以从 node.js 中创建 http 请求.支持 Promise API.支持拦截请求和响应.转换请求数据和响应数据.

CYK_byte的博客 1万+

Apache commons io FileUtils、IOUtils、FilenameUtils 详解

目录 FileUtils 常用 API listFiles 方法遍历目录/文件 序言 1、Apache 为大家提供了很多有用的 API,如 StringUtils、FileUtis 就是其中常用的之一 2、FileUtils 主要用于操作文件,API 所在包为:org.apache.commons.io 3、所需开发包可从官网下载:http://commons.apache.org/...

蚩尤后裔-汪茂雄 4万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

commons-io之FileUtils、IOUtils

笔者日常:这是笔者来深圳后的第一篇博客~记录一下,2019-06-25。 commons-io简单说明: Common IO 是一个工具库,用来帮助开发IO功能 它包括6个主要部分: 一些工具类:包括一些静态方法来执行常用任务。 输入:InputStream 和 Reader 实现。 输出:OutputStream 和 Writer 实现。 过滤器:多种文件...

JustryDeng 3869

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

org.apache.commons.io.IOUtils IOUtils.copy与IOUtils.closeQuietly的用法

byte[] data = new byte[1024]; InputStream in = null; OutputStream out = null; try { in = new FileInputStream("foo.txt"); in.read(data); out = new FileOutputStream("foo.txt");

CTO成长之路——Rosanu 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java 实用工具类:Apache Commons IO 的 IOUtils

在 Java I/O 操作中,我们经常需要读写流(如 InputStream、Reader、Writer 等),标准的 Java I/O API 操作较为繁琐,异常处理冗余。Apache Commons IO 提供的IOUtils工具类极大简化了这类操作,是开发中最常用的工具类之一。IOUtils是 Apache Commons IO 包中的工具类,提供了大量处理输入输出流的静态方法,如复制流、关闭流、读取内容、转换格式等。IOUtils。

x² 1639

Apache—commons-io 包 IOUtils、FileUtils、FilenameUtils

【代码】commons-io 包 IOUtils、FileUtils、FilenameUtils。

lercent的博客 390

IOUtils—org.apache.commons.io.IOUtils

api:http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/IOUtils.html 方法: copy:拷贝流。 copyLarge:拷贝较大的数据流。 read:从一个流中读取内容。 readFully:读取指定长度的流。 readLines: contentEquals:比较两...

底层码农 1万+

Apache Commons IO IOUtils类的操作实例

Apache Commons IO 的工具——IOUtils 类。 IOUtils 提供了许多很有帮助的静态方法,能帮助让很多工作摆脱繁琐的 I/O 操作。 public class WeatherFormatterTest extends TestCase { public WeatherFormatterTest(String name) { super(nam...

飞扬神话 240

commons-io-1.4.jar 包,IOUtils的使用

IO流实现文件复制 方式一: public static void main(String[] args) throws IOException { File file = new File("F:/B/test.txt"); if(!file.exists()){ //创建一个新的空文件 file.createNewFile(); } FileOu...

91奔跑的蜗牛 2338

Java IO流学习总结八:Commons IO 2.5-IOUtils

Java IO流学习总结八:Commons IO 2.5-IOUtils 转载请标明出处:http://blog.youkuaiyun.com/zhaoyanjun6/article/details/54972773 本文出自【赵彦军的博客】 在上一篇文章中,介绍了IO FileUtils的常规用法,今天介绍IOUtils的使用。IOUtils流操作的相关方法 copy:这个方法可以拷贝流,算是这个工

赵彦军 1万+

maven项目使用commons-io报错java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils 有没有大佬能知道错误原因

maven项目使用commons-io报错java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils 有没有大佬能知道错误原因。代码中也能导入,但是就是运行web项目时报错。pom文件已经添加了依赖。

qq_46656007的博客 324

使用org apache commons io FileUtils IOUtils 工具类操作文件

使用org apache commons io FileUtils IOUtils 工具类操作文件

hgffhh的博客 973
上一篇: Commons IO -- FileUtils
下一篇: SYN Flood
架构师的清醒
博客等级 码龄14年 291粉丝 397原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值