想用FileInputStream从服务器上读取文件,然后通过ServletOutputStream输出,
这里有一个前提是:通过InputSteam中available方法返回的字节数小于1024,所以写如下的代码是可以正常工作的:
但是之前也写了一段代码,如下:
在客户端去获取字节的时候总是出现读取超时,开始百思不得其解,最后,比较一下两端代码,明白了:
文件的长度小于1024,第二段代码中将会出现有一部分字节空余,这样在通过ServletOutputStream传输的时候会出错。
结论:在使用InputStream和OutputStream的read(byte[])和write(byte[])处理字节流时,最好确保数组每次都读满。
由这个结论联想到另外一个问题:读取文件的内容,将其打印出来,在网上看
想用FileInputStream从服务器上读取文件,然后通过ServletOutputStream输出,这里有一个前提是:通过InputSteam中available方法返回的字节数小于1024,所以写如下的代码是可以正常工作的:FileInputStream fis = new FileInputStream("fileName");ServletOutputStream sos
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java....
流对象说白了就是一堆进制码,并不支持和文件的直接转换,因为流本身并不知道文件的类型
实现思路:
先使用File创建出一个对应的文件,指定好类型,把流对象输入文件中,判断为-1则表示输入完成
@Test
public void test01() throws Exception{
InputStream Input = //获取
在servlet中用outputStream输出数据以及中文数据的问题
今天学习了servlet中比较重要的一个知识点,在servlet中用reponse对象的outputStream输出数据以及中文数据的问题。
首先,在servlet中向浏览器写数据(ps:其实这样说并不明确,准确点是想response中写数据,浏览器发现reposonse中有数据,就会读出来),向浏览器中输出数据:1.
处理二进制字节流:outputstream,inputstream 是接口,
FileOutPutStream,FileInputStream实现上述接口
BufferedInputStream,BufferedOutPutStream采用了装饰者模式,传入FileOutPutStream,FileInputStream作为参数
DataInputStream,DataOutPutStre...
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Set;
* 二、写出...
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLDecoder;
import java.net.URLEncoder;
FileInputStream-> ByteArrayOutputStream-> FileOutputStream
//设置读取路径
String filenameUrl = FILEUPLOAD_PATH+"yys"+".jpg";
//创建文件输入流 ,读取信息
FileInputStream fis=null;
try {
fis = new FileIn...