ゞ沉默是金ゞ
鱼离不开水,但是没有说不离开哪滴水.
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 98,comments - 104,trackbacks - 0
<
2012年7月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
Ant
Broker(1)
DB(8)
EJB(2)
eXtreme(7)
Hibernate
HTTP(6)
Java EE(8)
Java SE(31)
Jrules
Maven
Spring
Spring基础(1)
Struts
webservice(2)
其他收集(6)
性能测试(1)
搜索引擎
面试相关
随笔档案
2012年12月 (1)
2012年11月 (1)
2012年8月 (16)
2012年7月 (6)
2012年6月 (11)
2011年3月 (1)
2010年12月 (1)
2010年11月 (2)
2010年8月 (1)
2010年7月 (3)
2010年5月 (1)
2010年1月 (1)
2009年12月 (3)
2009年11月 (2)
2009年8月 (1)
2009年6月 (4)
2009年5月 (1)
2009年4月 (1)
2009年3月 (6)
2009年2月 (3)
2008年12月 (4)
文章分类
EJB(1)
代码收集
实用脚本
文章档案
2012年6月 (2)
2012年1月 (1)
2011年8月 (1)
2009年11月 (1)
2009年3月 (1)
2009年2月 (2)
搜索
最新评论
1. re: How to Create Client/Server Keystores using Java Keytool
Shawn?
--Freud
2. re: HTTP/1.1 Cache-Control的理解
这是网页代码,还是IIS 代码
--marmoglass
3. re: How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient
评论内容较长,点击标题查看
--dashi99
4. re: How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient
评论内容较长,点击标题查看
--shigangxing
5. re: Part 12: java.util.concurrent : SingleThreadPool Example
评论内容较长,点击标题查看
--NotNolyJava
阅读排行榜
1. HTTP/1.1 Cache-Control的理解(10085)
2. MYSQL 连接数据库命令收藏(8609)
3. 什么是RFC?(6594)
4. can not be represented as java.sql.Timestamp(5938)
5. How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient(3622)
评论排行榜
1. Java应用基础:网友精选25个Java试题分享(18)
2. 踏实与成功(11)
3. Eclipse中10个比较有用的快捷键组合(转)(7)
4. 摘:一个Java程序员应该掌握的10项技能(6)
5. Java获取客户端真实IP地址的两种方法(5)
文件读取实例
读取文件实例
package
org.duke.java.util;
import
java.io.BufferedReader;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileReader;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.RandomAccessFile;
import
java.io.Reader;
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
vo id
main(String[] args)
{
String fileName
=
"
C:/Shawn/test.txt
"
;
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}
posted on 2012-07-03 19:07
ゞ沉默是金ゞ
阅读(788)
评论(0)
编辑
收藏
所属分类:
Java SE
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
jvm学习笔记
ThreadPoolExecutor usage summary
Part 13: java.util.concurrent - Atomic Variables
Part 12: java.util.concurrent : SingleThreadPool Example
Part 11: java.util.concurrent - CachedThreadPool Example
Part 10: java.util.concurrent - ScheduledThreadPool Example
Part 9: java.util.concurrent : FixedThreadPool Example
Part 8: java.util.concurrent - "Executors" Factory Threads Pool
Part 7: java.util.concurrent - invokeAll via ExecutorService
Part 6: java.util.concurrent - Lock and Condition Object