import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
/** I/O工具 以流的形式获取*/
public class IOUtil {
private static final int DEFAULT_BUFFER_SIZE = 8192;
private IOUtil() {}
/**
* 转换输入流为字节数组
*
* @param inputStream 输入流
* @return 字节数组
* @throws IOException 读取字节失败、关闭流失败等
*/
public static byte[] toByteArray(InputStream inputStream) throws IOException {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[DEFAULT_BUFFER_SIZE];
while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
return buffer.toByteArray();
}
/**
* 转换输入流为字符串
*
* @param inputStream 输入流
* @return UTF-8编码的字符串
* @throws IOException 读取字节失败、关闭流失败等
*/
public static String toString(InputStream inputStream) throws IOException {
return new String(toByteArray(inputStream), StandardCharsets.UTF_8);
}
/**
* 从文件路径中读取字符串
*
* @param path 文件路径
* @return UTF-8编码的字符串
* @throws IOException 读取字节失败、关闭流失败等
*/
public static String loadStringFromPath(String path) throws IOException {
try (InputStream inputStream = Files.newInputStream(Paths.get(path))) {
return toString(inputStream);
}
}
}
// 文件读取
public class Files {
/**
* @param fileName:
* @return byte jdk 7之后写法
* @author Administrator
* @description TODO 以byte【】的方式读取文件
* @date 2023/2/14 0014 14:17
*/
public static byte[] readFileByBytes(String fileName) throws IOException {
try (InputStream in = new BufferedInputStream(new FileInputStream(fileName)); ByteArrayOutputStream out = new ByteArrayOutputStream()) {
byte[] bytes = new byte[in.available()];
for (int i = 0; (i = in.read(bytes)) != -1; ) {
out.write(bytes, 0, i);
}
return out.toByteArray();
}
}
/**
* @param fileName:
* @param bytes:
* @param append:
* @return void
* @author Administrator
* @description TODO 向文件写入byte【】
* @date 2023/2/14 0014 14:27
*/
public static void writeFileByBytes(String fileName, byte[] bytes, boolean append) throws IOException {
try (OutputStream out = new BufferedOutputStream(new FileOutputStream(fileName, append))) {
out.write(bytes);
}
}
public static void writeFileByBytes(String fileName, byte[] bytes) throws IOException {
writeFileByBytes(fileName, bytes, false);
// IntStream.range(0,3).forEach();
}
}
IO流操作
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 转换流 输入字节流的转换流:InputStreamReader 是字节流通向字符流的桥InputStreamRea...