java读写文件功能.docx
- 文档编号:17338716
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:28
- 大小:60.23KB
java读写文件功能.docx
《java读写文件功能.docx》由会员分享,可在线阅读,更多相关《java读写文件功能.docx(28页珍藏版)》请在冰点文库上搜索。
java读写文件功能
第一楼
在你身上流动的河..
∙博客园
∙闪存
∙首页
∙新随笔
∙联系
∙管理
∙订阅
随笔-24 文章-0 评论-36
[Java]读取文件方法大全
1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容
public class ReadFromFile {
/**
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
*/
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);
ReadFromFile.showAvailableBytes(in);
// 读入多个字节到字节数组中,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) {
}
}
}
}
/**
* 以字符为单位读取文件,常用于读文本,数字等类型的文件
*/
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下,\r\n这两个字符在一起时,表示一个换行。
// 但如果这两个字符分开显示时,会换两次行。
// 因此,屏蔽掉\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) {
}
}
}
}
/**
* 以行为单位读取文件,常用于读面向行的格式化文件
*/
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) {
}
}
}
}
/**
* 随机读取文件内容
*/
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) {
}
}
}
}
/**
* 显示输入流中还剩的字节数
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("当前字节输入流中的字节数为:
" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:
/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}
5、将内容追加到文件尾部
public class AppendToFile {
/**
* A方法追加文件:
使用RandomAccessFile
*/
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
*/
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();
}
}
public static void main(String[] args) {
String fileName = "C:
/temp/newTemp.txt";
String content = "new append!
";
//按方法A追加文件
AppendToFile.appendMethodA(fileName, content);
AppendToFile.appendMethodA(fileName, "append end. \n");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
//按方法B追加文件
AppendToFile.appendMethodB(fileName, content);
AppendToFile.appendMethodB(fileName, "append end. \n");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
}
}
绿色通道:
好文要顶关注我收藏该文与我联系
lovebread
关注-0
粉丝-35
+加关注
7
0
(请您对文章做出评价)
«博主前一篇:
[Java]HashMap的两种排序方式
»博主后一篇:
[C#]正则表达式入门
posted@2009-11-2323:
59lovebread阅读(109980)评论(5)编辑收藏
评论
#1楼2011-03-2416:
55|xiaoyue001
受益!
感谢楼主,支持楼主。
支持(0)反对(0)
#2楼[楼主]2011-03-2417:
21|lovebread
@xiaoyue001
呵谢谢
支持(0)反对(0)
#3楼2012-05-2509:
33|Freedom.L
楼主,请问用3方法读文本是中文乱码怎么解决
支持(0)反对(0)
#4楼2012-06-0809:
47|frankonge
goodcontent
支持(0)反对(0)
#5楼2012-07-2315:
50|小浣熊、
感谢楼主、内容很不错
支持(0)反对(0)
刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请登录或注册,访问网站首页。
沪江网诚聘中级/高级.NET程序员(社区方向)
园豆兑换阿里云代金券,1元享用阿里云云服务器
博客园首页博问新闻闪存程序员招聘知识库
最新IT新闻:
·测试:
你自认为理解了JavaScript?
·新款XX云手机即将发布XX中国电信首度携手
·传言不实:
好奇号并未在火星上发现有机物
·苹果副总裁曼斯菲尔德套现35000股苹果股票
·SurfacePro续航时间仅为RT版一半
»更多新闻...
最新知识库文章:
·图解HTTPS
·JavaScript开发规范要求
·为什么技术人员普遍都比较难沟通?
·如何成为一名优秀的web前端工程师(前端攻城师)?
·走出浮躁的泥沼
»更多知识库文章...
China-Pub低价书精选
China-Pub计算机绝版图书按需印刷服务
昵称:
lovebread
园龄:
3年
粉丝:
35
关注:
0
+加关注
搜索
常用链接
∙我的随笔
∙我的评论
∙我的参与
∙最新评论
∙我的标签
∙更多链接
我的标签
∙Python(5)
∙wpf(3)
∙Rails
(2)
∙Windows
(1)
∙Ajax
(1)
∙C++
(1)
∙Java
(1)
∙Javascript
(1)
∙mysql
(1)
∙Network
(1)
∙更多
随笔档案(24)
∙2011年1月
(1)
∙2010年11月(3)
∙2010年5月(3)
∙2010年3月
(2)
∙2010年1月(3)
∙2009年12月(4)
∙2009年11月(8)
最新评论
∙1.Re:
[WPF]自定义窗体样式
∙先收下了,谢了
∙--但,我知道
∙2.Re:
[WPF]自定义窗体样式
∙谢谢了尤其是多显示器那个很有帮助
∙--不呆和上
∙3.Re:
[Python]字符串加密解密
∙但是第二种方法不能用于linux环境。
。
。
∙--垂钓玄武
∙4.Re:
[Java]读取文件方法大全
∙感谢楼主、内容很不错
∙--小浣熊、
∙5.Re:
[Java]读取文件方法大全
∙goodcontent
∙--frankonge
阅读排行榜
∙1.[Java]读取文件方法大全(109980)
∙2.[Python]读写文件方法(12640)
∙3.[Java]HashMap的两种排序方式(9626)
∙4.[C++]MySQL数据库操作实例(8529)
∙5.MySQLGUITools使用简介(4744)
评论排行榜
∙1.[WPF]自定义窗体样式(11)
∙2.[Python]控制台输入密码的方法(5)
∙3.[Java]读取文件方法大全(5)
∙4.[C++]MySQL数据库操作实例(3)
∙5.[Python]登录人人网2011版(3)
推荐排行榜
∙1.[Java]读取文件方法大全(7)
∙2.[WPF]模仿AMDLIVE!
EXPLORER界面
(2)
∙3.[C++]MySQL数据库操作实例
(2)
∙4.[C#]正则表达式入门
(1)
∙5.利用“运行”功能加速windows
(1)
Copyright©2012lovebread
窗体顶端
DZM.528
Lifeisavoyage,notadestination.
java读写文件大全
注意:
当你写文件的时候,为了提高效率,写入的数据会先放入缓冲区,然后写入文件。
因此有时候你需要主动调用flus
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 读写 文件 功能