易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
Java读写文件笔记
Java代码
import
java.io.BufferedReader;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileReader;
import
java.io.FileWriter;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.RandomAccessFile;
import
java.io.Reader;
import
java.io.StringWriter;
import
java.io.Writer;
public
class
IOHelper {
public
static
void
copy(Reader in, Writer out)
throws
IOException {
int
c = -
1
;
while
((c = in.read()) != -
1
) {
out.write(c);
}
}
/**
* 读取文件内容
*
* @param file
* 文件
*/
public
static
String readFile(File file)
throws
IOException {
Reader in =
new
FileReader(file);
StringWriter out =
new
StringWriter();
copy(in, out);
return
out.toString();
}
/**
* 写入文件内容
*
* @param file
* 文件
*/
public
static
void
saveFile(File file, String content)
throws
IOException {
Writer writer =
new
FileWriter(file);
writer.write(content);
writer.close();
}
/**
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
*
* @param fileName
* 文件的名
*/
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.write(tempbyte);
}
in.close();
}
catch
(IOException e) {
e.printStackTrace();
return
;
}
try
{
System.out.println(
"以字节为单位读取文件内容,一次读多个字节:"
);
// 一次读多个字节
byte
[] tempbytes =
new
byte
[
100
];
int
byteread =
0
;
in =
new
FileInputStream(fileName);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while
((byteread = in.read(tempbytes)) != -
1
) {
System.out.write(tempbytes,
0
, byteread);
}
}
catch
(Exception e1) {
e1.printStackTrace();
}
finally
{
if
(in !=
null
) {
try
{
in.close();
}
catch
(IOException e1) {
}
}
}
}
/**
* 以字符为单位读取文件,常用于读文本,数字等类型的文件
*
* @param fileName
* 文件名
*/
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这两个字符在一起时,表示一个换行。
// 但如果这两个字符分开显示时,会换两次行。
// 因此,屏蔽掉r,或者屏蔽n。否则,将会多出很多空行。
if
(((
char
) tempchar) !=
"r"
) {
System.out.print((
char
) tempchar);
}
}
reader.close();
}
catch
(Exception e) {
e.printStackTrace();
}
try
{
System.out.println(
"以字符为单位读取文件内容,一次读多个字节:"
);
// 一次读多个字符
char
[] tempchars =
new
char
[
30
];
int
charread =
0
;
reader =
new
InputStreamReader(
new
FileInputStream(fileName));
// 读入多个字符到字符数组中,charread为一次读取字符数
while
((charread = reader.read(tempchars)) != -
1
) {
// 同样屏蔽掉r不显示
if
((charread == tempchars.length)
&& (tempchars[tempchars.length -
1
] !=
"r"
)) {
System.out.print(tempchars);
}
else
{
for
(
int
i =
0
; i < charread; i++) {
if
(tempchars[i] ==
"r"
) {
continue
;
}
else
{
System.out.print(tempchars[i]);
}
}
}
}
}
catch
(Exception e1) {
e1.printStackTrace();
}
finally
{
if
(reader !=
null
) {
try
{
reader.close();
}
catch
(IOException e1) {
}
}
}
}
/**
* 以行为单位读取文件,常用于读面向行的格式化文件
*
* @param fileName
* 文件名
*/
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
;
// 一次读入一行,直到读入null为文件结束
while
((tempString = reader.readLine()) !=
null
) {
// 显示行号
System.out.println(
"line "
+ line +
": "
+ tempString);
line++;
}
reader.close();
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
if
(reader !=
null
) {
try
{
reader.close();
}
catch
(IOException e1) {
}
}
}
}
/**
* 随机读取文件内容
*
* @param fileName
* 文件名
*/
public
static
void
readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile =
null
;
try
{
System.out.println(
"随机读取一段文件内容:"
);
// 打开一个随机访问文件流,按只读方式
randomFile =
new
RandomAccessFile(fileName,
"r"
);
// 文件长度,字节数
long
fileLength = randomFile.length();
// 读文件的起始位置
int
beginIndex = (fileLength >
4
) ?
4
:
0
;
// 将读文件的开始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte
[] bytes =
new
byte
[
10
];
int
byteread =
0
;
// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
// 将一次读取的字节数赋给byteread
while
((byteread = randomFile.read(bytes)) != -
1
) {
System.out.write(bytes,
0
, byteread);
}
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
if
(randomFile !=
null
) {
try
{
randomFile.close();
}
catch
(IOException e1) {
}
}
}
}
//*****************************************************************************
// 将内容追加到文件尾部
/**
* A方法追加文件:使用RandomAccessFile
*
*
@param
fileName
* 文件名
*
@param
content
* 追加的内容
*/
public
static
void
appendMethodA(String fileName,
String content) {
try
{
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile =
new
RandomAccessFile(fileName,
"rw"
);
// 文件长度,字节数
long
fileLength = randomFile.length();
// 将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
/**
* B方法追加文件:使用FileWriter
*
* @param fileName
* @param content
*/
public
static
void
appendMethodB(String fileName, String content) {
try
{
// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer =
new
FileWriter(fileName,
true
);
writer.write(content);
writer.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图