您的位置:首页 > 编程语言 > Java开发

多种方式读取文件内容

2017-11-02 00:00 836 查看
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";
/*
* 多种方式读取文件内容
* 1、按字节读取文件内容
* 2、按字符读取文件内容
* 3、按行读取文件内容
* 4、随机读取文件内容
*/

//1、按字节读取文件内容

/**
*
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件
* @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();
}
}

//2、按字符读取文件内容

/**
*
* 以字符为单位读取文件,常用于读文本,数字等类型的文件
* @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();
}
}

//3、按行读取文件内容

/**
*
* 以行为单位读取文件,常用于读面向行的格式化文件
* @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();
}
}

//4、随机读取文件内容

/**
*
* @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();
}

}
}
}

public static void main(String[] args){
// readFileByBytes(IMAGEPATH);
// readFileByChars(DEPATH);
// readFileByLines(DEPATH);
readFileByRandomAccess(DEPATH);
}

}

注:仅供分享,内容参照其他学者
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java