2 somnus adenty Somnus_adenty 于 2016.09.07 14:14 提问

关于IO流中InputStream 与 FileInputStream的问题

同样的文件为什么用InputStream先read()后available()得出的文件大小与FileInputStream直接available()得出的文件大小不一致呢?我用的是mongoDB接收的图片,测试的时候用的GridFsTemplate的findOne()方法查询出的图片返回的一个GridFSDBFile对象,这个对象中有一个getInputStream方法可以返回一个InputStream,这个InputStream必须先read才能查出文件大小,但是与直接用FileInputStream测试数值不一样,差1,请大神指教

1个回答

zqbnqsdsmd
zqbnqsdsmd   2016.11.16 02:31
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
文件传输基础—Java IO流 FileInputStream 的运用
1、字节流 1)包含两个抽象类:InputStream 、 OutputStream      其中,InputStream抽象了应用程序读取数据的方式,而OutputStream抽象了应用程序写出数据的方式 2)EOF = end,读到-1就是读到结尾了; 3)输入流的基本方法 int b =in.read();读取一个字节无符号的填充到int的低8位,读到-1就结束(EOF) in
java io的相对路径和绝对路径
java io的相对路径和绝对路径 简单的说,在使用inputstream读取文件的时候,所谓的相对路径是相对于工程目录的,绝对路径当然是对于盘符根目录来说。 例如:   代码 package io;import java.io.File;import java.io.FileInputStream;import java.io.IOException;imp
IO流_FileInputStream读取数据一次一个字节数组
package cn.itcast_02; import java.io.FileInputStream; import java.io.IOException; /* * 一次读取一个字节数组:int read(byte[] b) * 返回其实是实际读取取的字节个数。 */ public class FileInputStreamDemo2 { public static void
IO流_FileInputStream读取数据
package cn.itcast_02; import java.io.FileInputStream; import java.io.IOException; /* * 字节输入流操作步骤: * A:创建字节输入流对象 * B:调用read()方法读取数据,并把数据显示到控制台 * C:释放资源 * 读取数据方式: * A:int read():一次读取一个字节
IO流之创建文件并fileInputStream、fileOutputStream 读写操作
创建文件夹可以使用file类的mkdirs()和mkdir()方法,区别在于: mkdir() 创建此抽象路径名指定的目录。 mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。   使用mkdirs()创建目录D:\demo\ 代码如下: [java] view plain copy
IO流操作后 关闭顺序
package com.io.inputstreamreader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import jav
java io -- FilterInputStream 与 装饰者模式
在上一篇文章中讲了FileInputStream 本文将介绍一个特殊的输入字节流:FilterInputStream,以及与之相随的一个经典的设计模式,装饰者模式。 在之前的文章中提到,InputStream的读取是以byte为单位的,但是我们日常中经常会读写其他类型的数据,当然,我们可以把读取出来的字节进行转码,转成我们需要的数据,那么能不能直接读取字符,int等数据呢?能,只需要利用Dat
Java中FileInputStream读写数据时换行处理
上一篇博客中写到了关于Java中流的一些读取方法。这里要写的具体地一点代码。就是将读取到的内容进行16进制的输出,并且做适当的换行处理。 直接上代码: public void printHex(String name) throws IOException { FileInputStream fis = new FileInputStream(name); i
Java.IO.InputStream.skip() 错误(跳过字节数和预想的不等)
最近写一个网络下载软件,需要使用java.IO.InputStream.skip(long n) 方法,它的作用是从输入流中跳过 n 个字节,比如 inputStream.skip(12),就是从inputStream中读最近写一个网络下载软件,需要使用取数据时,跳过前 12 个字节,从第13个字节读取,方法的返回值就是实际跳过的字节数 Java.IO.InputStream.skip(long
java IO 流Stream 序列化Serializable 文件File
一、什么是流 二、流的分类 三、流结构介绍 四、常用流类介绍 五、Serializable 六、面试题