Java的几种读文件方式,一种为按单字节读取,即每次仅读取一个字节,此方式适合图像文件,声音文件,视频文件等二进制文件操作;第二种方式为按多字节读取,自定义一次读的字节数量;第三种方式为按字符读操作,即每次读一个字符,此方式适合文本文件,数据文件的读操作;第四种方式为按行读操作,即一次读取一行数据
package com.anson.java;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.Socket;
public class FileOpr{
//按字节形式读取文件数据,用于二进制文件读写,图片,声音,视频等文件形式
//每次读入一个字节
public void readFileByByte(String fileName)
{
File file=new File(fileName);//实例化一个文件对象
InputStream is=null;
try
{
is=new FileInputStream(file);//实例化一个文件输入流
int dataByte;//定义一个暂时存储数据的int类型的对象
while((dataByte=is.read())!=-1)//读取,判断是否到文件结尾
{
System.out.println(dataByte);//输出
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();//关闭流
} catch (IOException e)
{
e.printStackTrace();
}
}
}
//每次读取多个字节,每次读取4个字节
public void multiReadByBytes(String fileName)
{
File file=new File(fileName);//实例化一个文件对象
InputStream is=null;
try
{
is=new FileInputStream(file);//实例化一个文件输入流
byte[] bytes=new byte[4];//定义一个字节数组,暂时存放读取的数据
int len;//数据长度判断标志
while((len=is.read(bytes))!=-1)
{
System.out.write(bytes, 0, len);//输出控制台
}
}catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();//关闭文件输入流
} catch (IOException e)
{
e.printStackTrace();
}
}
}
//按字符类型读取完文件信息,每次读取一个字符,适合文本,数字类文件
public void readFileByChar(String fileName)
{
File file=new File(fileName);//实例化一个文件对象
Reader reader=null;
try
{
InputStream inputStream=new FileInputStream(file);//实例化一个文件输入流,
reader=new InputStreamReader(inputStream);//实例化一个数据读入流
int tmpData;
while((tmpData=reader.read())!=-1)
{
if((char)tmpData!='\r')//判断换行
{
System.out.print((char)tmpData);//输出
}
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
reader.close();//关闭流
} catch (IOException e)
{
e.printStackTrace();
}
}
}
//按行读取文件
public void readFileByLine(String fileName)
{
File file=new File(fileName);//实例化一个文件对象
BufferedReader bf=null;
try
{
bf=new BufferedReader(new FileReader(file));//实例化对象
String str=null;
while((str=bf.readLine())!=null)
{
System.out.println(str);//输出
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
bf.close();//关闭流
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}