在java中,可以使用InputStream对文件进行读取,就是字节流的输入。当读取文件内容进程序时,需要使用一个byte数组来进行存储,如此会有如下两个问题:

1.如何建立合适大小的byte数组,如果已知输入流的大小。

2.如果不知输入流的大小,则肯定需要建立一个很大的byte数组,那么byte中很可能有空的内容,那么如何正确合适的将byte数组的中的内容输出?

先看第一个问题:解决之道就是获取输入流的大小,创建此大小的byte数组。代码如下:view plaincopy to clipboardprint?

//使用InputStream从文件中读取数据,在已知文件大小的情况下,建立合适的存储字节数组

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo01

{

public static void main(String args[])throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[]=new byte[(int)f.length()];     //创建合适文件大小的数组

in.read(b);    //读取文件中的内容到b[]数组

in.close();

System.out.println(new String(b));

}

}

//使用InputStream从文件中读取数据,在已知文件大小的情况下,建立合适的存储字节数组

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo01

{

public static void main(String args[])throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[]=new byte[(int)f.length()];     //创建合适文件大小的数组

in.read(b);    //读取文件中的内容到b[]数组

in.close();

System.out.println(new String(b));

}

}

第二个问题:问题的解决之道就是获得输入流何时结束,它在byte中的尾索引位置。可以通过read()方法实现,read()返回读取的字节内容,当内容为空时返回-1。利用此特征可以解决第二个问题。代码如下:

view plaincopy to clipboardprint?

//同过判断文件的结尾来读取文件

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

public class InputStreamDemo02

{

public static void main(String args[]) throws Exception{

File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");

InputStream in = new FileInputStream(f);

byte b[] = new byte[1024];

int len = 0;

int temp=0;          //所有读取的内容都使用temp接收

while((temp=in.read())!=-1){    //当没有读取完时,继续读取

b[len]=(byte)temp;

len++;

}

in.close();

System.out.println(new String(b,0,len));

}

}

java 读取文件inputstream_使用Inputstream读取文件相关推荐

  1. java 保存inputstream_java如何将一个InputStream写入文件啊?

    展开全部 java通过InputStream读取和写入文件操作e69da5e6ba903231313335323631343130323136353331333365643662实例代码 1. Fil ...

  2. java下mysql连接配置文件_Java读取.properties配置文件并连接数据库

    1.读取配置文件 //Properties集合 流对象读取键值对 public static void getNum() throws Exception { Properties p=new Pro ...

  3. java中mypoiexception_Java中使用POI读取大的Excel文件或者输入流时发生out of memory异常参考解决方案...

    注意:此参考解决方案只是针对xlsx格式的excel文件! 背景 前一段时间遇到一种情况,服务器经常宕机,而且没有规律性,查看GC日志发生了out of memory,是堆溢出导致的,分析了一下堆的d ...

  4. Java如何读取JAR包外的properties文件及打成jar包后无法读取到jar包内的properties文件

    项目中,经常把一部分功能独立出来,做一个java  project,然后打成jar包供其他项目引用.这时候,如果jar包中需要读取配置文件信息,则很少把该配置打进jar包,因为它不方便修改,更多都是采 ...

  5. 使用Java中的FileChannel和ByteBuffer在文件中读取/写入文件

    过去,我讨论过RandomAccessFile以及如何将其用于在Java中进行更快的IO,在本Java NIO教程中,我们将了解如何通过使用FileChannel和ByteBuffer来使用读/写数据 ...

  6. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

    如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...

  7. java读取csv文件_使用扫描仪读取Java中的CSV文件

    java读取csv文件 We can use Java Scanner Class to read CSV File in java. 我们可以使用Java扫描程序类在Java中读取CSV文件. 读取 ...

  8. java读取局域网共享文件夹中文件并保存到本地文件夹

    在磁盘新建一个文件夹,右击文件夹属性,点击共享 点击网络和共享中心 设置文件夹可访问权限 到此就可以用本地ip加文件夹名称访问了,同局域网也可以通过改地址访问 文件夹的名称来自这张图的 网络路径 如果 ...

  9. 超详细:Java 读取 Windows 共享文件夹中的文件,并下载到本地电脑中

    目录 JCIFS 介绍 SMB协议 设置共享文件夹(这里我们选择有密码的方式进行共享) 是否设置密码 创建 smb 协议 测试 使用代码将文件夹里的文件下载到本地 项目常常需要有访问共享文件夹的需求, ...

  10. Java读取、写入、处理Excel文件中的数据

    在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有 ...

最新文章

  1. Podfile 常见语法
  2. 数组之间的计算matlab,MATLAB软件数组的运算
  3. java 阻塞队列 LinkedBlockingQueue ArrayBlockingQueue 分析
  4. Hadoop Name node is in safe mode报错解决办法
  5. export default (imported as router) was not found_小学生必须知道的英语语法知识:as…as的七大用法...
  6. 20172327 2018-2019-1 《程序设计与数据结构》第八周学习总结
  7. python的return语句求两数之和_程序题(python解)
  8. [转载]使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案
  9. Vigenère密码(洛谷P1079题题解,Java语言描述)
  10. 中国电信9月将率先推出5G新号段:资费也随之曝光 最高599元/月?
  11. 1971旗舰cpu intel_AMD依然yes!官宣锐龙5000系列CPU,单核性能首次超越英特尔,苏妈:最好的游戏CPU!...
  12. DevExpress v18.1新版亮点——WPF篇(二)
  13. Codeforces 1114F Please, another Queries on Array? 线段树
  14. Grads:绘制风流畅
  15. SOLIDWORKS Composer生成BOM表属性不显示的解决办法
  16. 【源码分享】-c++界面源代码分享
  17. 《Excel大神上分攻略》学习笔记1——填充、行列操作、数据格式
  18. ScrollView嵌套Tablaout与ViewPager联动(标签)(ScrollView与ViewPager冲突)
  19. VSCode这13款插件也太好用了
  20. 鲁棒性、泛化的解释和区别

热门文章

  1. DAVIS Driving Dataset 2020 (DDD20) 【转载】
  2. android网络编程案例,深入理解Android网络编程pdf 完整版
  3. 非洲机皇传音继续出圈
  4. 【每日英文】2021.8.5
  5. IDEA添加gitlab仓库并上传代码(无需使用任何git指令),报错Ask a project Owner or Maintainer to create a default branch解决方案
  6. 基于PaaS人事部门间平台多重身份的技术解决方案
  7. HCL_路由器_三层交换
  8. 角色设计竟然有这些小技巧
  9. 下等人薄情,中等人深情,上等人……
  10. MySQL8.0 - 新特性 - Descending Index 1