public char[] downloadWord(String fileName) throws IOException {
char[] cb = null;
// String filePath = DocumentManager.GetFileUri(fileName);
String filePath = "D:\\ChromeCoreDownloads\\简历表-张益维.docx";
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file); // fis是输入流
ByteArrayOutputStream baos = new ByteArrayOutputStream(fis.available()); // baos是输出流
byte[] bytes = new byte[fis.available()]; // 创建一个和文件大小一样的缓冲区
int temp;
// 边读边写
while ((temp = fis.read(bytes)) != -1) { // 将fis里面的内容读到bytes数组中,并返回读入的个数
baos.write(bytes, 0, temp);
}
fis.close();
baos.close();
byte[] buffer = baos.toByteArray(); // 将字节流转化为字节数组
Charset cs = Charset.forName("utf-8"); // 创建一个utf-8的字符集
// 从堆空间中分配一个容量大小为buffer长度的byte数组作为缓冲区的byte数据存储器
ByteBuffer bb = ByteBuffer.allocate(buffer.length); // bb是一个字节缓冲存储器
// 翻转就是将一个处于存数据状态的缓冲区变为一个处于准备取数据的状态
bb.put(buffer).flip(); // 把buffer中可读的内容写到存储器中,再翻转一下
cb = cs.decode(bb).array(); // 把字节解码为字符再转换为数组
return cb;
}
其中关于字节流和字符流的详细讲解,传送门
ByteBuffer字节缓冲的详细内容,传送门
字节流转化为字符流的操作:
File file = new File("test.txt");
Reader reader = new InputStreamReader(new FileInputStream(file));
char[] c = new char[reader.available()];
reader.read(c);
reader.close()