mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
add methods
This commit is contained in:
parent
2337e3a367
commit
65d60a79fe
@ -7,6 +7,8 @@
|
||||
|
||||
### 新特性
|
||||
* 【crypto 】 SecureUtil去除final修饰符(issue#1474@Github)
|
||||
* 【core 】 IoUtil增加lineIter方法
|
||||
|
||||
### Bug修复
|
||||
* 【core 】 修复IoUtil.readBytes的FileInputStream中isClose参数失效问题(issue#I3B7UD@Gitee)
|
||||
|
||||
|
@ -1,5 +1,9 @@
|
||||
package cn.hutool.core.collection;
|
||||
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
@ -10,10 +14,6 @@ import java.nio.charset.Charset;
|
||||
import java.util.Iterator;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
|
||||
/**
|
||||
* 将Reader包装为一个按照行读取的Iterator<br>
|
||||
* 此对象遍历结束后,应关闭之,推荐使用方式:
|
||||
@ -70,7 +70,8 @@ public class LineIter implements Iterator<String>, Iterable<String>, Closeable,
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
/**
|
||||
* 判断{@link Reader}是否可以存在下一行。 If there is an <code>IOException</code> then {@link #close()} will be called on this instance.
|
||||
* 判断{@link Reader}是否可以存在下一行。
|
||||
* If there is an {@code IOException} then {@link #close()} will be called on this instance.
|
||||
*
|
||||
* @return {@code true} 表示有更多行
|
||||
* @throws IORuntimeException IO异常
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.hutool.core.io;
|
||||
|
||||
import cn.hutool.core.collection.LineIter;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.exceptions.UtilException;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
@ -10,6 +11,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.Closeable;
|
||||
import java.io.File;
|
||||
@ -846,6 +848,56 @@ public class IoUtil extends NioUtil {
|
||||
return (out instanceof BufferedOutputStream) ? (BufferedOutputStream) out : new BufferedOutputStream(out, bufferSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为{@link BufferedReader}
|
||||
*
|
||||
* @param reader {@link Reader}
|
||||
* @return {@link BufferedReader}
|
||||
* @since 5.6.1
|
||||
*/
|
||||
public static BufferedReader toBuffered(Reader reader) {
|
||||
Assert.notNull(reader, "Reader must be not null!");
|
||||
return (reader instanceof BufferedReader) ? (BufferedReader) reader : new BufferedReader(reader);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为{@link BufferedReader}
|
||||
*
|
||||
* @param reader {@link Reader}
|
||||
* @param bufferSize buffer size
|
||||
* @return {@link BufferedReader}
|
||||
* @since 5.6.1
|
||||
*/
|
||||
public static BufferedReader toBuffered(Reader reader, int bufferSize) {
|
||||
Assert.notNull(reader, "Reader must be not null!");
|
||||
return (reader instanceof BufferedReader) ? (BufferedReader) reader : new BufferedReader(reader, bufferSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为{@link BufferedWriter}
|
||||
*
|
||||
* @param writer {@link Writer}
|
||||
* @return {@link BufferedWriter}
|
||||
* @since 5.6.1
|
||||
*/
|
||||
public static BufferedWriter toBuffered(Writer writer) {
|
||||
Assert.notNull(writer, "Writer must be not null!");
|
||||
return (writer instanceof BufferedWriter) ? (BufferedWriter) writer : new BufferedWriter(writer);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为{@link BufferedWriter}
|
||||
*
|
||||
* @param writer {@link Writer}
|
||||
* @param bufferSize buffer size
|
||||
* @return {@link BufferedWriter}
|
||||
* @since 5.6.1
|
||||
*/
|
||||
public static BufferedWriter toBuffered(Writer writer, int bufferSize) {
|
||||
Assert.notNull(writer, "Writer must be not null!");
|
||||
return (writer instanceof BufferedWriter) ? (BufferedWriter) writer : new BufferedWriter(writer, bufferSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将{@link InputStream}转换为支持mark标记的流<br>
|
||||
* 若原流支持mark标记,则返回原流,否则使用{@link BufferedInputStream} 包装之
|
||||
@ -1214,4 +1266,51 @@ public class IoUtil extends NioUtil {
|
||||
public static long checksumValue(InputStream in, Checksum checksum) {
|
||||
return checksum(in, checksum).getValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回行遍历器
|
||||
* <pre>
|
||||
* LineIterator it = null;
|
||||
* try {
|
||||
* it = IoUtil.lineIter(reader);
|
||||
* while (it.hasNext()) {
|
||||
* String line = it.nextLine();
|
||||
* // do something with line
|
||||
* }
|
||||
* } finally {
|
||||
* it.close();
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @param reader {@link Reader}
|
||||
* @return {@link LineIter}
|
||||
* @since 5.6.1
|
||||
*/
|
||||
public static LineIter lineIter(Reader reader){
|
||||
return new LineIter(reader);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回行遍历器
|
||||
* <pre>
|
||||
* LineIterator it = null;
|
||||
* try {
|
||||
* it = IoUtil.lineIter(in, CharsetUtil.CHARSET_UTF_8);
|
||||
* while (it.hasNext()) {
|
||||
* String line = it.nextLine();
|
||||
* // do something with line
|
||||
* }
|
||||
* } finally {
|
||||
* it.close();
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @param in {@link InputStream}
|
||||
* @param charset 编码
|
||||
* @return {@link LineIter}
|
||||
* @since 5.6.1
|
||||
*/
|
||||
public static LineIter lineIter(InputStream in, Charset charset){
|
||||
return new LineIter(in, charset);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user