import java.io.*;java
/**
*
* @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";
/*
* 多种方式读取文件内容
* 一、按字节读取文件内容
* 二、按字符读取文件内容
* 三、按行读取文件内容
* 四、随机读取文件内容
*/windows
//一、按字节读取文件内容dom
/**
*
* 以字节为单位读取文件,经常使用于读二进制文件,如图片、声音、影像等文件
* @param fileName 文件名
* @return void
*/
public static void readFileByBytes(String fileName){
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("以字节为单位读取文件内容,一次读一个字节");
in = new FileInputStream(file);
int tempByte;
while ((tempByte=in.read())!=-1){
System.out.print(tempByte+"segment");
}
in.close();
}catch (Exception e){
e.printStackTrace();
}
}jsp
//二、按字符读取文件内容.net
/**
*
* 以字符为单位读取文件,经常使用于读文本,数字等类型的文件
* @param fileName 文件名
* @return void
*/
public static void readFileByChars(String fileName){
File file = new File(fileName);
Reader reader = null;
try {
System.out.println("以字符为单位读取文件内容,一次读一个字节");
reader = new InputStreamReader(new FileInputStream(file));
int tempChar;
while ((tempChar=reader.read())!=-1){
//对于windows下,rn这两个字符在一块儿时,表示一次换行,如两个字符分开时,表示两次换行
if((char)tempChar!='r'){
System.out.print((char)tempChar);
}
}
reader.close();
}catch (Exception e){
e.printStackTrace();
}
}图片
//三、按行读取文件内容get
/**
*
* 以行为单位读取文件,经常使用于读面向行的格式化文件
* @param fileName 文件名
* @return void
*/
public static void readFileByLines(String fileName){
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
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();
}
}it
//四、随机读取文件内容io
/**
*
* @param fileName 文件名
* @return void
*/
public static void readFileByRandomAccess(String fileName){
RandomAccessFile randomAccessFile = null;
try {
System.out.println("随机读取一段文件内容:");
//打开一个随机访问文件流,按只读方式
randomAccessFile = new RandomAccessFile(fileName,"r");
//文件长度,字节数
long fileLength = randomAccessFile.length();
//将读文件的开始位置
int beginIndex = (fileLength>4)?4:0;
//将读文件的开始位置移到beginIndex位置
randomAccessFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteRead = 0;
//一次读10个字节,若是文件内容不足10个字节,则读剩下的字节。
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();
}class
}
}
}
public static void main(String[] args){
// readFileByBytes(IMAGEPATH);
// readFileByChars(DEPATH);
// readFileByLines(DEPATH);
readFileByRandomAccess(DEPATH);
}
}
注:仅供分享,内容参照其余学者