首页 > 编程知识 正文

用fso对象读取文件(java读取服务器上的文件)

时间:2023-05-03 23:32:49 阅读:76551 作者:4908

相同的InputStream对象方法1方法2重复读取byte数组和InputStream的相互转换byte数组,移动到InputStream,移动到byte数组,然后重复读取InputStream的方法

已知每次从InputStream对象读取数据时,当前读取位置的指针都会移动。 读取结束时,想从该InputStream对象中再次读取数据,但由于指针已到达极限,无法执行此操作。 此外,InputStream不支持克隆。 也就是说,也不能预先备份此InputStream对象。 但是,这也不是没有办法。

方法1如果要使用的InputStream对象支持方法清洁酸奶,则可以结合方法reset读取和重置InputStream对象。 方法是,如果需要先用方法清洁的酸奶标记位置,然后重置,请使用方法reset将此InputStream对象重置为刚才的位置。

方法清洁酸奶的使用规则如下。 当InputStream对象调用方法的清洁酸奶时,将标记此InputStream对象的当前读取位置。 但是,必须指定作为读取范围的参数。 在标记后继续从InputStream读取数据时,如果读取的数据大小超过此范围,则在随后调用方法reset时将直接抛出异常。 在这里,您可以看到此参数效果不大,最好将其设置为大于要导入的数据大小,通常将其设置为此InputStream对象的方法available的返回值。

使用模板如下:

//该inputStream的支持方法为清洁酸奶if(inputStream .清洁酸奶Supported () try ) inputStream .清洁酸奶) image stream.avvorted //在当前位置标记}catch(ioexceptionioexception ) { ioException.printStackTrace ); //TODO :处理异常(//TODO )从该InputStream对象读取数据try ) Inputstream.reset; 重置inputstream } catch (ioexceptionioexception ) { ioException.printStackTrace ); //TODO :处理异常} //TODO :重新开始从该InputStream对象读取数据try { inputStream.reset ()。 重新重置inputStream以供将来重新加载(catch ) ioexceptionioexception ) { ioException.printStackTrace; //TODO :处理异常}(else )//TODO )方法如果不支持清洁酸奶(使用其他方法);方法2如果使用的InputStream对象不支持方法清洁酸奶可以考虑使用经典方法(FileInputStream不支持此方法),该方法将此InputStream对象转换为另一个独立的只读数据类型,类似于暗克隆的常用方法有多种方法,例如将InputStream对象转换为byte数组,然后创建导入此byte数组的InputStream对象。 但是,建议您从一开始就从InputStream读取完整的数据,这样会失去InputStream对象惯性读取的好处,因此使用上述方法1。 本节介绍如何使用byte数组实现此功能。

byte数组和InputStream的相互转换byte数组inputstreampublicstaticbyte[] InputStream }字节(inputstream inputstream ) throwsioexception ) throwsioexception (inputstream ) inputstreambyte数组publicstaticinputstreambytearray2inputstream (byte [ ] byte (returnnewbytearrayinputstream ) bytes ); } inputstream byte [ ] bytes=new byte [0]; try { bytes=inputstream2bytearray (inputstream ); }catch(ioexceptionioexception ) { ioException.printStackTrace ); //TODO :处理异常(//TODO :需要Inputstream时,可以直接获取新的Inputstream。 varneedinputstream=bytearray2inputstream (bytes ); //todo :反复获取inputstreamvarneedinputstream2=bytearray2inputstream (bytes ); //TODO :

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。