文件讀取(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不能同時調用*/
}
}