diff --git a/common/src/main/java/org/apache/rocketmq/common/MixAll.java b/common/src/main/java/org/apache/rocketmq/common/MixAll.java index e75efd9a3bb9ee7e87a08aa550ba0aba0474bd0a..36d81d09bc1c0ca9b377e593f512113f28528aab 100644 --- a/common/src/main/java/org/apache/rocketmq/common/MixAll.java +++ b/common/src/main/java/org/apache/rocketmq/common/MixAll.java @@ -18,7 +18,7 @@ package org.apache.rocketmq.common; import java.io.ByteArrayInputStream; import java.io.File; -import java.io.FileReader; +import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; @@ -187,30 +187,24 @@ public class MixAll { } } - public static String file2String(final String fileName) { + public static String file2String(final String fileName) throws IOException { File file = new File(fileName); return file2String(file); } - public static String file2String(final File file) { + public static String file2String(final File file) throws IOException { if (file.exists()) { - char[] data = new char[(int) file.length()]; - boolean result = false; + byte[] data = new byte[(int) file.length()]; + boolean result; - FileReader fileReader = null; + FileInputStream inputStream = null; try { - fileReader = new FileReader(file); - int len = fileReader.read(data); + inputStream = new FileInputStream(file); + int len = inputStream.read(data); result = len == data.length; - } catch (IOException e) { - // e.printStackTrace(); } finally { - if (fileReader != null) { - try { - fileReader.close(); - } catch (IOException e) { - e.printStackTrace(); - } + if (inputStream != null) { + inputStream.close(); } } diff --git a/common/src/test/java/org/apache/rocketmq/common/MixAllTest.java b/common/src/test/java/org/apache/rocketmq/common/MixAllTest.java index 8220981e51dd382f4eb6d58535dec3befbfad05d..218b36d2d8be12880458bebba521eb42d8ce18af 100644 --- a/common/src/test/java/org/apache/rocketmq/common/MixAllTest.java +++ b/common/src/test/java/org/apache/rocketmq/common/MixAllTest.java @@ -21,6 +21,10 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.net.InetAddress; +import java.nio.ByteOrder; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.concurrent.atomic.AtomicLong; import org.junit.Test; @@ -67,6 +71,22 @@ public class MixAllTest { file.delete(); } + @Test + public void testFile2String_WithChinese() throws IOException { + String fileName = System.getProperty("java.io.tmpdir") + File.separator + "MixAllTest" + System.currentTimeMillis(); + File file = new File(fileName); + if (file.exists()) { + file.delete(); + } + file.createNewFile(); + PrintWriter out = new PrintWriter(fileName); + out.write("TestForMixAll_中文"); + out.close(); + String string = MixAll.file2String(fileName); + assertThat(string).isEqualTo("TestForMixAll_中文"); + file.delete(); + } + @Test public void testString2File() throws IOException { String fileName = System.getProperty("java.io.tmpdir") + File.separator + "MixAllTest" + System.currentTimeMillis();