文件读取(javaWeb-IO)
读取文件步骤:
1.获取文件的绝对路径(getRealPath())
2.加载文件
3.读取一个字符
4.读取多个字符
5.读取文件所有内容
package com.helong.stream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.plaf.synth.SynthStyle;
@WebServlet("/StreamSevlet")
public class StreamSevlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//加载一个文件
//一定使用绝对路径
//在读取WebContent目录下的文件的时候可以直接使用文件名进行读取,其他目录之下的文件必须要使用相对路径的方式进行读取
String path = this.getServletContext().getRealPath("a.txt");
/*System.out.println(path);*/
//加载文件 二进制流 字节码
FileInputStream in = new FileInputStream(path);
/*System.out.println(in);*/
//获取字节码
//读取一个字符
//System.out.println(in.read());
//System.out.println(in.read());
//System.out.println(in.read());
//System.out.println(in.read());
//System.out.println(in.read());
//当文件读取完毕时, 就会返回一个-1
//System.out.println(in.read());
//当前读取了几个字符 如果读了最后 ,一个都没有读取 ,就会返回一个-1
/*
*
byte[] buffer = new byte[5];
System.out.println(Arrays.toString(buffer));
int len = in.read(buffer);
System.out.println(len);
System.out.println(Arrays.toString(buffer));
len = in.read(buffer);
System.out.println(len);
System.out.println(Arrays.toString(buffer));
len = in.read(buffer);
System.out.println(len);
System.out.println(Arrays.toString(buffer));
len = in.read(buffer);
System.out.println(len);
System.out.println(Arrays.toString(buffer));
len = in.read(buffer);
System.out.println(len);
System.out.println(Arrays.toString(buffer));*/
byte[] buffer = new byte[1024];
/*System.out.println(Arrays.toString(buffer));*/
int len = 0;
while((len = in.read(buffer)) != -1) {
/*输出读取字符的长度*/
System.out.println(len);
/*将读取的字符数组(ASCII码)以字符数组的形式输出*/
System.out.println(Arrays.toString(buffer));
/*将读取的内容以字符串的形形式输出*/
System.out.println(new String(buffer,0,len));
}
//关闭文件
in.close();
/*write();一次写一个字符
* write(buffer) 一次写多个字符
* write(buffer,o,len) 一次写指定个数的字符
* */
/*response使用注意点:getWrite()和getOutPutStream不能同时调用*/
}
}