
Notes是一个具有Id , RuleID , MainId 属性的javaBean
public static List<Notes> readFromXLS2007(String filePath) {
File excelFile = null;// Excel文件对象
InputStream is = null;// 输入流对象
String cellStr = null;// 单元格,最终按字符串处理
List<Notes> NotesList = new ArrayList<Notes>();// 返回封装数据的List
Notes Notes = null;// 每一个Notes对象
try {
excelFile = new File(filePath);
is = new FileInputStream(excelFile);// 获取文件输入流
XSSFWorkbook workbook2007 = new XSSFWorkbook(is);// 创建Excel2007文件对象
XSSFSheet sheet = workbook2007getSheetAt(0);// 取出第一个工作表,索引是0
// 开始循环遍历行,表头不处理,从1开始
for (int i = 1; i <= sheetgetLastRowNum(); i++) {
Notes = new Notes();// 实例化Notes对象
XSSFRow row = sheetgetRow(i);// 获取行对象
if (row == null) {// 如果为空,不处理
continue;
}
// 循环遍历单元格
for (int j = 0; j < rowgetLastCellNum(); j++) {
XSSFCell cell = rowgetCell(j);// 获取单元格对象
if (cell == null) {// 单元格为空设置cellStr为空串
cellStr = "";
} else if (cellgetCellType() == XSSFCellCELL_TYPE_BOOLEAN) {// 对布尔值的处理
cellStr = StringvalueOf(cellgetBooleanCellValue());
} else if (cellgetCellType() == XSSFCellCELL_TYPE_NUMERIC) {// 对数字值的处理
cellStr = cellgetNumericCellValue() + "";
} else {// 其余按照字符串处理
cellStr = cellgetStringCellValue();
}
// 下面按照数据出现位置封装到bean中
if (j == 0) {
NotessetId(new Double(cellStr)intValue());
} else if (j == 1) {
NotessetRuleId(new Double(cellStr)intValue());
} else if (j == 2) {
NotessetMainId(new Double(cellStr)intValue());
}
}
NotesListadd(Notes);// 数据装入List
}
} catch (IOException e) {
eprintStackTrace();
} finally {// 关闭文件流
if (is != null) {
try {
isclose();
} catch (IOException e) {
eprintStackTrace();
}
}
}
return NotesList;
}
}
package comtexst;
import javaioFile;
import javaioFileInputStream;
import javaioFileNotFoundException;
import javaioIOException;
public class GetFileMessageOfDisk {
/
@param args
/
public static void main(String[] args) {
File file = new File("D:/");
getMessage(file);
}
private static void getMessage(File file){
File[] files = filelistFiles();
if(files==null){
files = new File[0];
}
for(int i=0;i<fileslength;i++){
if(files[i]isDirectory()){
Systemoutprintln(files[i]getPath());
getMessage(files[i]);
}else{
try {
int length = new FileInputStream(files[i])available();
Systemoutprintln(files[i]getName()+" 长度:"+length+" 大小:"+length/1024+"KB");
} catch (FileNotFoundException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
}
可以写入一个或者一段字符的。
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/testtxt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“testtxt”实例
pwwrite("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write
pwclose();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
在Java程序中,要想从文件中读取数据,需要在程序和文件之间建立一条数据输入的通道,这样程序就可以从文件中读取数据了;反之,如果要在Java程序中把数据写入到文件中,也需要在程序和文件之间建立一条数据输出的通道。当程序创建输入流对象时,Java会自动建立这个数据输入通道,而创建输出流时,Java也会自动建立这个数据输出通道。如下图所示:
Java程序读取与写入数据
输入流是从文件读取数据,是一个拉取数据的过程;输出流是将数据写入到文件,是一个推送数据的过程。
为了便于理解输入输出流,前面都是以文件为数据源来讨论的。其实,Java的输入与输出流支持任何数据源的读取与写入,包括键盘、文件、网络、数据库等数据源。
输入流和输出流按读取和写入的数据单位可分为字节流和字符流,字节流是以字节为单位传输数据的流,字符流是以字符为单位传输数据的流。
Java所提供的输入流和输出流类封装在Javaio包中
在文件流读取完之后会定位到末端,则无法再用该输入流读取数据。若用read()方法则返回-1,若你调用available()方法返回0,若要重新读取,则要用到mark和reset方法。若要重新从0开头开始读取,则要在读取输入流之前用mark方法,参数readlimit由自己定义。若在读取了第n个字节后调用mark方法,在输入流读取完之后,调用reset则从新重第n个字节开始读取。
public void mark(int readlimit)
在此输入流中标记当前的位置。对 reset 方法的后续调用会在最后标记的位置重新定位此流,以便后续读取重新读取相同的字节。
readlimit 参数告知此输入流在标记位置失效之前允许读取的字节数。
mark 的常规协定是:如果方法 markSupported 返回 true,那么输入流总是在调用 mark 之后记录所有读取的字节,并时刻准备在调用方法 reset 时(无论何时),再次提供这些相同的字节。但是,如果在调用 reset 之前可以从流中读取多于 readlimit 的字节,则不需要该流记录任何数据。如果在mark之后读取的数据的大小大于 readlimit和BufferedInputStream类的缓冲区大小两者中的最大值则mark标记无效。
标记已关闭的流对其无效。
InputStream 的 mark 方法不执行任何 *** 作。
参数:
readlimit - 在标记位置失效前可以读取字节的最大限制。
注意:mark和reset方法只能在BufferedInputStream中使用,BufferedInputStream类调用mark(int readlimit)方法后读取多少字节标记才失效,是取readlimit和BufferedInputStream类的缓冲区大小两者中的最大值,而并非完全由readlimit确定。这个在JAVA文档中是没有提到的。
例子:
public PreviewImage(InputStream reader2,OutputStream os)throws IOException{
BufferedInputStream reader = new BufferedInputStream(reader2);
byte[] b = new byte[1024 5]; //输出流的缓冲区 5kb
int len;
readermark(readeravailable()+1);
while ( (len = readerread(b)) != -1) {
//oswrite(b, 0, len);
}
readerreset();
while ( (len = readerread(b)) != -1) {
oswrite(b, 0, len);
}
osflush();
osclose();
}
以上就是关于java poi Excel2007里的SXSSFWorkbook怎样读取文件 SXSSFWorkbook只能写吗,那怎样获得要写的内容全部的内容,包括:java poi Excel2007里的SXSSFWorkbook怎样读取文件 SXSSFWorkbook只能写吗,那怎样获得要写的内容、利用Java文件类File的方法,获取磁盘文件的文件名、长度、大小等特性。、java的write()方法,在服务器获取输入流写入一段字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)