- 浏览: 6359185 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容
1、按字节读取文件内容
public
class
ReadFromFile {
/**
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
*/
public
static
void
readFileByBytes(String fileName) {
File file
=
new
File(fileName);
InputStream in
=
null
;
try
{
//
一次读一个字节
in
=
new
FileInputStream(file);
int
tempbyte;
while
((tempbyte
=
in.read())
!=
-
1
) {
System.out.write(tempbyte);
}
in.close();
}
catch
(IOException e) {
e.printStackTrace();
return
;
}
try
{
//
一次读多个字节
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) {
}
}
}
}
2、按字符读取文件内容
InputStreamReader 是
字节流通向字符流的桥梁
:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,否则可能接受平台默认的字符集。
每次调用 InputStreamReader 中的一个 read() 方法都会导致从基础输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从基础流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader
。例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
/**
* 以字符为单位读取文件,常用于读文本,数字等类型的文件
*/
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) {
}
}
}
}
3、按行读取文件内容
BufferedReader从字符输入流中读取文本
,缓冲各个字符,从而提供字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
建议用 BufferedReader 包装所有,其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)
。例如,
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致
从文件中读取字节,并将其转换为字符后返回
,而这是极其低效的
。
/**
* 以行为单位读取文件,常用于读面向行的格式化文件
*/
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) {
}
}
}
}
4、随机读取文件内容
/**
* 随机读取文件内容
*/
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);
}
}
来源:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html
发表评论
-
拦截器和过滤器的区别
2019-06-27 10:46 7071【Spring的拦截器】于【Servlet的Filter】有 ... -
高并发下的数据结构List/Set/Map
2019-03-26 14:17 1273高并发下的Java数据结 ... -
tomcat的三种运行模式+JAVA NIO
2019-03-12 11:13 5096详解Tomcat三种运行模 ... -
反射基础
2019-01-11 14:51 671十年架构师不到400行手写一个Spring MVC ... -
java反射原理, 注解原理
2019-01-08 17:22 4597注解机制及原理 JAVA ... -
内存泄露与内存溢出的区别
2018-12-24 16:14 27531、内存泄漏 memory le ... -
深入解析JAVA中的装箱与拆箱
2018-12-21 10:42 1330地址: https://www.cnblogs.com/d ... -
负载均衡原理
2018-12-20 17:43 804简介几种负载均衡原理 高并发解决方案之一 ——负载均衡 ... -
CAS自旋锁
2018-12-20 11:12 1652我们常说的 CAS 自旋锁是什么 CAS与ABA问题 ... -
编码问题+字节+unicode
2017-11-28 10:52 4307ASCII -》 ISO8859-1 -》GB2312 - ... -
Java基础知识总结(二)~持续学习中
2017-10-11 17:56 162430.try-catch public class T ... -
StringTokenizer-大数据情况下截取字符串
2016-11-23 11:00 3199java.util.StringTokenizer ... -
tomcat中处理消息提示的公用类 StringManager.java
2016-11-18 10:24 1860代码很简单,主要学习思路。 tomcat中处理消息 ... -
JAVA IO流中的flush
2016-11-18 09:51 3266前言: 大家在使用Java IO流中Output ... -
读取JAR中文件
2015-12-08 17:03 3808【解惑】深入jar包:从jar包中读取资源文件 读取ja ... -
JAVA过滤敏感词
2015-12-07 17:38 3313Java实现敏感词过滤 编程珠玑 - 算法优化 - 过 ... -
java过滤特殊字符串
2015-08-25 19:32 14696// 过滤特殊字符 public stat ... -
java.lang.reflect.Array.newInstance与list.toArray
2015-08-18 16:35 3907一. import java.util. ... -
JRE下的rt.jar、tools.jar
2014-10-29 10:59 13476JRE下的rt.jar: 这个文件是极为重要的一个文件,r ... -
内部类
2014-10-21 17:58 1298定义: 内部类 就是在类的内部嵌套定义一个类 使用内部类 ...
相关推荐
Java文件路径操作是Java开发中常见且重要的任务,无论是在读写文件、处理资源还是进行系统交互时,都需要对文件路径进行操作。本篇将详细探讨Java中的文件路径处理技术,主要涵盖以下知识点: 1. **File类**: ...
******原创非转载****** ******支持解析Powerdesiger物理逻辑图****** ******非JAVA源码****** 代码一键自动生成工具 可生成Action、JavaBean实体类、Dao及实现类、service及实现类、spring.xml、struts.xml、...
- 使用`File`类创建一个文件对象,然后通过`FileInputStream`读取文件内容。 - 设置响应头信息,包括`Content-Type`(表示文件类型),`Content-Disposition`(设置文件名,告诉浏览器以下载方式处理)。 - 使用`...
Java提供了许多预定义的流类,例如FileInputStream和FileOutputStream分别用于读取和写入文件,而SocketInputStream和SocketOutputStream则用于网络通信。 3. **缓冲区** 为了提高效率,Java I/O系统使用缓冲区...
DAT数据格式 5A 5A 5A 5A xx xx xx xx xx xx xx xx xx xx xx xx xx xx ...然后根据wav文件结构将其写入wav文件。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yanhc519/archive/2009/12/05/4946228.aspx
文章中提到的"用 Preferences API 存储对象.mht"文件可能是一个包含完整教程或者示例代码的MHT(单一文件网页)文档,里面可能详述了如何将对象序列化后存入Preferences以及如何读取这些对象。 总之,Preferences ...
7. **异常处理**:为了保证程序的健壮性,开发者会使用try-catch语句来捕获和处理可能出现的异常,例如读取文件时的IOException。 8. **设计模式**:良好的软件设计通常会运用设计模式,比如单例模式用于控制抽奖...
import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; /** * 使用URLConnection下载文件或图片并保存到本地...
******原创非转载****** ******支持解析Powerdesiger物理逻辑图****** ******JAVA源码****** 代码一键自动生成工具 可生成Action、JavaBean实体类、Dao及实现类、service及实现类、spring.xml、struts.xml、mybatis....
3. **文件I/O操作**:记事本需要读取和保存文件,这就涉及到Java的File、FileInputStream、FileOutputStream类以及BufferedReader和PrintWriter等流类的使用。 4. **事件监听**:在Java GUI应用中,用户与界面的...
1. **输入读取**:`javac`首先读取源代码文件的每个字符,并创建一个字符流。 2. **字符分类**:根据Java的词法规则,识别出单词字符、空白字符、换行符等。 3. **词法单元生成**:词法分析器通过滑动窗口的方式,从...
**标题:“Hibernate缓存机制,转载”** **描述:**这篇博客主要探讨了Hibernate框架中的缓存机制,包括一级缓存和二级缓存的概念、工作原理以及如何在实际开发中应用。 **标签:“源码 工具”** **知识点详解:*...
二进制文件是指那些可由计算机 读取,而无法被人读取的文件(如果在文本编辑器中打开二进制文件,其中的内容将以垃圾字符显示)。十六进制编辑器是一种允许您查看和编辑二进制文件中个别 字节的程序,而高级的十六...
1. **打开文档**:类可能包含一个方法,用于加载多个Word文档到内存中,这通常涉及到读取文件内容并将其转换为适当的对象模型。 2. **文档合并逻辑**:这是类的核心部分,它会将多个文档的内容整合到一个新文档中。...
静态方式获取XML配置意味着每次应用启动时,都会一次性读取并解析XML文件,生成菜单结构。这种方式适合菜单不经常变动的情况。 总的来说,Struts-menu是一个强大的工具,它通过XML配置文件简化了Java Web应用中菜单...
在service()方法中,开发者可以根据请求的方法(GET、POST等)进行不同的操作,如读取请求参数、处理业务逻辑、生成响应内容。 Struts2框架则是对Servlet的一种封装,它提供了一个更易于管理和扩展的架构。在Struts...
5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis...
4. **数据读取和预处理**:内置数据集加载器,支持CSV、HDFS、MongoDB等数据源,并提供数据预处理工具。 5. **模型部署**:可以将训练好的模型导出为Java字节码或ONNX格式,方便在生产环境中集成。 ** Apache Maven...
通过这个源码,你可以学习到如何使用`java.io`和`java.nio`包进行文件操作,以及如何构建用户友好的文件选择界面。 2. **3_contact.rar**:这个源码涉及到Android联系人管理,演示了如何访问和操作系统的联系人数据...