对读写格式限制:
public static boolean checkPicture(String FileKey){
//仅.xml,.ini,.cfg,.txt,.bat文件可编辑!
List<String > picture = Arrays.asList("xml","ini","cfg","txt","bat");
return picture.stream().anyMatch(FileKey.toLowerCase(Locale.ROOT)::endsWith);
}
使用BufferedInputStream读写
public static String getFileContent(String FileKey, String bucket_name) {
String result = StrUtil.EMPTY;
if (ObjectUtil.isNotEmpty(FileKey)) {
if (!checkPicture(FileKey)) {
throw new RuntimeException("不支持该种文件格式的读写!");
}
try {
InputStream stream = MinIoUtil.getObject(bucket_name, FileKey, 0, null);
if (null != stream) {
BufferedInputStream file = new BufferedInputStream(stream);
ByteArrayOutputStream boa = new ByteArrayOutputStream();
int len = 0;
byte[] buffer = new byte[1024];
while ((len = file.read(buffer)) != -1) {
boa.write(buffer, 0, len);
}
boa.flush();
InputStream streamCopy = new ByteArrayInputStream(boa.toByteArray());
String encode = CharsetConvertUtil.getEncode(new BufferedInputStream(streamCopy), false);
file.close();
result = boa.toString(encode);
}
} catch (Exception e) {
throw new ServiceException("获取文件" + FileKey + "失败: " + e.getMessage());
}
}
return result;
}
使用InputStreamReader BufferedReader读写
该方法会出现乱码问题
public static String getFileContent(String FileKey, String bucket_name) {
StringBuilder stringBuffer = new StringBuilder();
InputStream streamRead = null;
if (ObjectUtil.isNotEmpty(FileKey)) {
if (!checkPicture(FileKey)) {
throw new RuntimeException("不支持该种文件格式的读写!");
}
try {
InputStream stream = MinIoUtil.getObject(bucket_name, FileKey, 0, null);
if (null != stream) {
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader buffReader = new BufferedReader(reader);
String strTmp = "";
while ((strTmp = buffReader.readLine()) != null) {
stringBuffer.append(String.format("%s%n",strTmp));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return stringBuffer.toString();
}