当datainputstream对象读到文件结束处,则返回-1
时间: 2024-03-11 12:49:15 浏览: 85
是的,当DataInputStream对象读取文件到结束处时,会返回-1。这是因为DataInputStream类的read方法会返回一个字节的整数值,如果读取到文件末尾了,就没有更多的字节可以读取了,此时read方法会返回-1,表示已经读取到了文件的结尾。这是Java IO流操作中的一个常见现象,在使用DataInputStream进行文件读取时,需要在读取数据之前先判断是否到了文件的结尾,以免出现异常情况。例如,可以在读取数据的循环中使用如下代码判断是否到了文件结尾:
```java
while (dis.available() > 0) {
// 读取数据
int data = dis.read();
// 处理数据
}
```
其中,available方法可以获取当前可以读取的字节数,如果返回值为0,则表示已经到了文件末尾,不再有数据可读取。
相关问题
doc文件上传到通过 DataInputStream方法导致文件损坏
使用 `DataInputStream` 来读取二进制文件是不适合的,因为它是用于读取二进制数据的。对于文本文件,我们应该使用 `BufferedReader` 或 `Scanner` 等文本读取器。
如果你想要读取一个 doc 文件,可以考虑使用 `FileInputStream` 和 `FileOutputStream` 来进行文件的读写操作。以下是一个示例代码:
```java
try {
FileInputStream fileInputStream = new FileInputStream("example.doc");
FileOutputStream fileOutputStream = new FileOutputStream("example_copy.doc");
byte[] buffer = new byte[1024];
int length;
while ((length = fileInputStream.read(buffer)) > 0) {
fileOutputStream.write(buffer, 0, length);
}
fileInputStream.close();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
```
在这个例子中,我们使用 `FileInputStream` 来读取原始文件,将读取到的文件内容存储在缓冲区中,然后使用 `FileOutputStream` 将缓冲区中的内容写入到新文件中。
另外需要注意的是,如果你要上传的 doc 文件是一个包含格式化文本、图片等多种元素的 Word 文档,建议使用 Apache POI 等第三方库来进行操作,这样可以保证文件内容的完整性。
哪种类型可以用于构造DataInputStream对象
可以使用InputStream类型的对象来构造DataInputStream对象。 DataInputStream是用于读取基本数据类型的Java IO类,它可以从输入流中读取Java原始数据类型,如int, float, double, boolean等。因此,你可以使用任何实现了InputStream接口的类来构造DataInputStream对象,比如FileInputStream、ByteArrayInputStream等。
阅读全文