返回-1是到达的意思,java文件流读取pdf文件读到一半返回-1意味着已经达到了流的结尾,因此在该流中没有更多内容可以阅读,需要重新打开。
java是一种计算机编程语言,拥有跨平台,面向对象,泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发,任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言。
首先你要知道java的io流主要分两种,一种是字符流,另一种字节流,还有一种过滤流,这个不常用,暂且可以忽略。等你这些都掌握了,推荐你用nio包中的管道流。
流的套用可以提升读写效率(这种方式只能是同类流的套用,比如字节流套用字节流),还有一种是字符流与字节流互相转换,转换通过一种叫做“桥转换”的类,比如OutputStreamWriter类。
下面举个最基础的字节流例子:
public void copyFile(String file, String bak) {
BufferedInputStream bis = null
BufferedOutputStream bos = null
try {
byte[] bytes = new byte[1024]
bis = new BufferedInputStream(new FileInputStream(file))//BufferedInputStream会构造一个背部缓冲区数组,将FileInputStream中的数据存放在缓冲区中,提升了读取的性能
bos = new BufferedOutputStream(new FileOutputStream(bak))//同理
int length = bis.read(bytes)
while (length != -1) {
System.out.println("length: " + length)
bos.write(bytes, 0, length)
length = bis.read(bytes)
}
} catch (Exception e) {
e.printStackTrace()
} finally {
try {
bis.close()
bos.close()
} catch (IOException ex) {
ex.printStackTrace()
}
}
}
字符流的用法:
FileReader fr = new FileReader("D:\\test.txt")
BufferedReader br = new BufferedReader(fr)
或者PrintWriter pw = new PrintWriter(new FileWriter("D:\\test.txt"))
...