当前位置: 首页 > 知识库问答 >
问题:

文件与输入流

凤棋
2023-03-14

我正在阅读Poi(3.7)的excel文件。我正在学习一些关于poi的链接poi快速指南。现在我担心的是:

打开工作簿(.xls HSSFWorkbook或.xlsx XSSFWorkbook)时,可以从文件或InputStream加载工作簿。使用File对象允许更低的内存消耗,而InputStream需要更多的内存,因为它必须缓冲整个文件

在3.7版本的Poi中,WorkbookFactory没有以下方法

WorkbookFactory.Create(新文件(“MyExcel.xls”))

InputStream  is  = (InputStream) getClass().getResourceAsStream("/MyExcel.xlsx");
Workbook wb = WorkbookFactory.create(is); 
String path = getClass().getResource("/MyExcel.xlsx").getPath();
FileInputStream fis = new FileInputStream(new File(path));
Workbook wb = WorkbookFactory.create(fis);

共有1个答案

徐栋
2023-03-14

第一种方法是好的,如果您的文件位于文件系统。第二种方式其实是错误的。如果您的文件是应用程序的一部分(即可以从类路径获得),请使用以下代码:

Workbook wb = WorkbookFactory.create(getClass().getResourceAsStream("/MyExcel.xlsx").getPath());

你的代码出了什么问题?实际上,只有当您的类直接位于文件系统中时,它才会起作用。但是,如果它们打包到jar中,则new FileInputStream(new File(path))行将抛出fileNotFoundException,因为文件确实不存在于文件系统中,而是打包到jar中。

 类似资料:
  • 文件 std::fs::File 本身实现了 Read 和 Write trait,所以文件的输入输出非常简单,只要得到一个 File 类型实例就可以调用读写接口进行文件输入与输出操作了。而要得到 File 就得让操作系统打开(open)或新建(create)一个文件。还是拿例子来说明 use std::io; use std::io::prelude::*; use std::fs::File;

  • 主要内容:puts 语句,实例,gets 语句,实例,putc 语句,实例,print 语句,实例,打开和关闭文件,语法,读取和写入文件,实例,实例,实例,实例,实例,重命名和删除文件,实例,实例,文件模式与所有权,实例,文件查询,实例,实例,实例,实例,实例,实例,实例,实例,Ruby 中的目录,创建文件 & 临时目录,内建函数Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现。所有的 I/O 方法派生自 IO 类。 类 IO 提供了所有基础的方法,比如 read、

  • 阅读器bean 我尝试这样做:在FlatFileItemReader的实现中,将输入文件路径作为string属性添加到ExecutionContext的映射中。在我的FlatFileItemWriter实现中-重写setResource,并实际从ExecutionContext的值中创建一个Resource对象。这样行吗?

  • 本章我们会开发一个程序,它能读写文件、解析输入并说明apmatrix类的用法。我们还会实现集合数据结构Set,它会随着添加元素自动扩充。除了说明这些特性,程序的真正目标是生成一个表示美国一些主要城市间距离的二维表。输出是这样的一个表格: Atlanta 0 Chicago 700 0 Boston 1100 1000 0 Dallas 800

  • 目录表 文件 使用文件 储存器 储存与取储存 概括 在很多时候,你会想要让你的程序与用户(可能是你自己)交互。你会从用户那里得到输入,然后打印一些结果。我们可以分别使用raw_input和print语句来完成这些功能。对于输出,你也可以使用多种多样的str(字符串)类。例如,你能够使用rjust方法来得到一个按一定宽度右对齐的字符串。利用help(str)获得更多详情。 另一个常用的输入/输出类型

  • 问题内容: 如何在fileinputstream中输入要发送的文件? 我在Fileinputstream中输入了url,但是URL的输出是错误的,因为链接斜杠像-从/到\一样向后翻转,而双斜杠//只能是一个斜杠和一个反斜杠。要执行fileinputstream吗?如果不是,您能告诉我应该使用什么代替fileinputstream吗? 问题答案: 如果您要获取从URL检索数据的,则使用方法将返回,可