package com.xuc.test;
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;
/**
* @author CHENG
*
*/
public class ReadFromFile {
public static void main(String[] args) {
String fileName = "d:/JH.xml";
ReadFromFile.readFileByBytes(fileName);
// ReadFromFile.readFileByChars(fileName);
// ReadFromFile.readFileByLines(fileName);
// ReadFromFile.readFileByRandomAccess(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[2];
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) {
}
}
}
}
/**
* @param
*/
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();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Struts2 Hibernate Spring CXF JSON FreeMarker (173个子文件)
ReadFromFile.class 5KB
JsonDemoAction.class 4KB
UserAction.class 3KB
TestMyAnnotation.class 3KB
UserServiceClient.class 3KB
TestFreeMarker.class 3KB
User.class 2KB
UserServiceImplTest.class 2KB
TestServlet.class 2KB
TimerTest.class 2KB
UserServiceImpl.class 2KB
TimerTest$2.class 1KB
UserDaoImpl.class 1KB
ProxyHandler.class 1KB
TimerTest$1MyTimerTask.class 1KB
StartWebService.class 1KB
FreeMarkerAction.class 1009B
MyTimerTaskA.class 1007B
MyTimerTaskB.class 1007B
TimerTest$1.class 972B
MyProxyFactory.class 949B
TestAction.class 935B
GetMyAnnotation.class 845B
TestProxy.class 789B
BasicAction.class 707B
BasicDaoImpl.class 705B
DogIntercepter.class 627B
DogImpl.class 594B
MyInterceptor.class 584B
UserService.class 562B
MyAnnotation.class 436B
UserDao.class 428B
Dog.class 149B
BasicDao.class 109B
.classpath 7KB
org.eclipse.wst.common.component 610B
org.eclipse.wst.jsdt.ui.superType.container 49B
login.css 434B
header.css 37B
freeMarker_success.ftl 665B
include.ftl 189B
header.ftl 181B
testFreeMarker.ftl 48B
testFreeMarker.ftl 48B
friend_link.ftl 20B
footer.ftl 15B
cxf-2.7.1.jar 6.55MB
hibernate3.jar 2.31MB
jaxb-xjc-2.2.6.jar 1.98MB
aspectjweaver-1.7.1.jar 1.71MB
freemarker-2.3.19.jar 909KB
org.springframework.context-3.1.0.M1.jar 779KB
struts2-core-2.3.8.jar 775KB
jaxb-impl-2.0.4.jar 768KB
xwork-core-2.3.8.jar 604KB
javassist-3.11.0.GA.jar 600KB
org.springframework.beans-3.1.0.M1.jar 568KB
commons-collections-3.2.1.jar 562KB
wstx-asl-3.2.0.jar 493KB
mysql-connector-java-5.0.4-bin.jar 484KB
antlr-2.7.6.jar 433KB
httpclient-4.2.1.jar 417KB
org.springframework.web-3.1.0.M1.jar 409KB
org.springframework.core-3.1.0.M1.jar 403KB
org.springframework.jdbc-3.1.0.M1.jar 384KB
log4j-1.2.15.jar 383KB
fastjson-1.1.24.jar 344KB
org.springframework.orm-3.1.0.M1.jar 332KB
jetty-server-8.1.7.v20120910.jar 328KB
org.springframework.aop-3.1.0.M1.jar 322KB
commons-lang3-3.1.jar 308KB
dom4j-1.6.1.jar 307KB
httpcore-nio-4.2.2.jar 279KB
jetty-util-8.1.7.v20120910.jar 273KB
hibernate-annotations-3.3.0.ga.jar 259KB
commons-lang-2.4.jar 256KB
org.springframework.transaction-3.1.0.M1.jar 238KB
commons-beanutils-1.8.0.jar 226KB
ognl-3.0.6.jar 223KB
httpcore-4.2.2.jar 218KB
stax2-api-3.1.1.jar 178KB
org.springframework.expression-3.1.0.M1.jar 171KB
xmlschema-core-2.0.3.jar 159KB
commons-io-2.0.1.jar 156KB
wsdl4j-1.6.2.jar 145KB
commons-dbcp-1.2.2.jar 119KB
commons-pool-1.6.jar 109KB
jetty-io-8.1.7.v20120910.jar 101KB
geronimo-servlet_3.0_spec-1.0.jar 94KB
jetty-http-8.1.7.v20120910.jar 92KB
ezmorph-1.0.6.jar 85KB
httpasyncclient-4.0-beta3.jar 80KB
neethi-3.0.2.jar 70KB
struts2-json-plugin-2.3.8.jar 69KB
struts2-convention-plugin-2.3.8.jar 65KB
hibernate-commons-annotations-3.3.0.ga.jar 65KB
commons-logging-1.1.1.jar 59KB
geronimo-jaxws_2.2_spec-1.1.jar 59KB
commons-fileupload-1.2.1.jar 57KB
org.springframework.asm-3.1.0.M1.jar 52KB
共 173 条
- 1
- 2
资源评论
- cutecute2014-04-29还不错,适合初学者学习
- lyptec2014-10-20代码里有反射源码,有些小例子,不错。
清风徐来……
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功