多种方式读取文件内容
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
import java.io.*;
/**
?*
?* @author wxp
?* Created by Administrator on 2017/10/29 0029.
?*/
public class ReadFromFile {
? ? public static final String DEPATH = "D:/test/deFile/test.jsp";
? ? public static final String IMAGEPATH = "C:\\Users\\Administrator\\Desktop\\logo.png";
? ?/*
? ?* 多種方式讀取文件內(nèi)容
? ?* 1、按字節(jié)讀取文件內(nèi)容
? ?* 2、按字符讀取文件內(nèi)容
? ?* 3、按行讀取文件內(nèi)容
? ?* 4、隨機(jī)讀取文件內(nèi)容
? ?*/
? ?//1、按字節(jié)讀取文件內(nèi)容
? ? /**
? ? *
? ? * 以字節(jié)為單位讀取文件,常用于讀二進(jìn)制文件,如圖片、聲音、影像等文件
? ? * @param fileName 文件名
? ? * @return void
? ? */
? ? public ?static void readFileByBytes(String fileName){
? ? ? ? File file = new File(fileName);
? ? ? ? InputStream in = null;
? ? ? ? try {
? ? ? ? ? ? System.out.println("以字節(jié)為單位讀取文件內(nèi)容,一次讀一個(gè)字節(jié)");
? ? ? ? ? ? in = new FileInputStream(file);
? ? ? ? ? ? int tempByte;
? ? ? ? ? ? while ((tempByte=in.read())!=-1){
? ? ? ? ? ? ? ? System.out.print(tempByte+"segment");
? ? ? ? ? ? }
? ? ? ? ? ? in.close();
? ? ? ? }catch (Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
? ? //2、按字符讀取文件內(nèi)容
? ? /**
? ? *
? ? * 以字符為單位讀取文件,常用于讀文本,數(shù)字等類(lèi)型的文件
? ? * @param fileName 文件名
? ? * @return void
? ? */
? ? public ?static void readFileByChars(String fileName){
? ? ? ? File file = new File(fileName);
? ? ? ? Reader reader = null;
? ? ? ? try {
? ? ? ? ? ? System.out.println("以字符為單位讀取文件內(nèi)容,一次讀一個(gè)字節(jié)");
? ? ? ? ? ? reader = new InputStreamReader(new FileInputStream(file));
? ? ? ? ? ? int tempChar;
? ? ? ? ? ? while ((tempChar=reader.read())!=-1){
? ? ? ? ? ? ? ? //對(duì)于windows下,rn這兩個(gè)字符在一起時(shí),表示一次換行,如兩個(gè)字符分開(kāi)時(shí),表示兩次換行
? ? ? ? ? ? ? ? if((char)tempChar!='r'){
? ? ? ? ? ? ? ? System.out.print((char)tempChar);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? reader.close();
? ? ? ? }catch (Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
? ? //3、按行讀取文件內(nèi)容
? ? /**
? ? *
? ? * 以行為單位讀取文件,常用于讀面向行的格式化文件
? ? * @param fileName 文件名
? ? * @return void
? ? */
? ? public ?static void readFileByLines(String fileName){
? ? ? ? File file = new File(fileName);
? ? ? ? BufferedReader reader = null;
? ? ? ? try {
? ? ? ? ? ? System.out.println("以行為單位讀取文件內(nèi)容,一次讀一整行:");
? ? ? ? ? ? reader = new BufferedReader(new FileReader(file));
? ? ? ? ? ? String tempString = null;
? ? ? ? ? ? int line=1;
? ? ? ? ? ? while ((tempString=reader.readLine())!=null){
? ? ? ? ? ? ? ? ? ? System.out.println("line"+line+":"+tempString);
? ? ? ? ? ? ? ? ? ? ?line++;
? ? ? ? ? ? }
? ? ? ? ? ? reader.close();
? ? ? ? }catch (Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
? ? //4、隨機(jī)讀取文件內(nèi)容
? ? /**
? ? *
? ? * @param fileName 文件名
? ? * @return void
? ? */
? ? public ?static void readFileByRandomAccess(String fileName){
? ? ? ? RandomAccessFile randomAccessFile = null;
? ? ? ? try {
? ? ? ? ? ? System.out.println("隨機(jī)讀取一段文件內(nèi)容:");
? ? ? ? ? ? //打開(kāi)一個(gè)隨機(jī)訪問(wèn)文件流,按只讀方式
? ? ? ? ? ? randomAccessFile = new RandomAccessFile(fileName,"r");
? ? ? ? ? ? //文件長(zhǎng)度,字節(jié)數(shù)
? ? ? ? ? ? long fileLength = randomAccessFile.length();
? ? ? ? ? ? //將讀文件的開(kāi)始位置
? ? ? ? ? ? int beginIndex = (fileLength>4)?4:0;
? ? ? ? ? ? //將讀文件的開(kāi)始位置移到beginIndex位置
? ? ? ? ? ? randomAccessFile.seek(beginIndex);
? ? ? ? ? ? byte[] bytes = ?new byte[10];
? ? ? ? ? ? int ?byteRead = 0;
? ? ? ? ? ? //一次讀10個(gè)字節(jié),如果文件內(nèi)容不足10個(gè)字節(jié),則讀剩下的字節(jié)。
? ? ? ? ? ? while ((byteRead = randomAccessFile.read(bytes))!=-1){
? ? ? ? ? ? ? ? System.out.write(bytes,0,byteRead);
? ? ? ? ? ? }
? ? ? ? }catch (Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }finally {
? ? ? ? ? ? if (randomAccessFile!=null){
? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ?randomAccessFile.close();
? ? ? ? ? ? ? ?}catch (Exception e){
? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ?}
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? public static void main(String[] args){
// ? ? ? ?readFileByBytes(IMAGEPATH);
// ? ? ? ?readFileByChars(DEPATH);
// ? ? ? ?readFileByLines(DEPATH);
? ? ? ? readFileByRandomAccess(DEPATH);
? ? }
}
注:僅供分享,內(nèi)容參照其他學(xué)者
轉(zhuǎn)載于:https://my.oschina.net/u/3378039/blog/1560037
總結(jié)
以上是生活随笔為你收集整理的多种方式读取文件内容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Windows远程Linux/Ubunt
- 下一篇: C语言第三次作业