java读取文件:文本文件
一般使用串行方式读出或者写入文件。总的来说,使用输入流把文件内容读入内存,使用输出流把内存中的信息写出到文件。这些类位于java.io包下。
输入和输出的类和方法往往是对应的
文本文件
先了解如何读写文本文件,然后看如何读写二进制文件。jaVa.ioReader用来读取字符,它的子类FileReader用来读取文本文件。
FileReader打开指定路径下的文件。文件的路径分隔符可以用“\\”或者“/”表示。
“\\”是Windows风格的写法,因为字符串中的特殊字符要转义,所以用两个斜线表示一个斜线。
FileReader fr = new FileReader ("c: Wautoexec.bat"); //打幵文本文件
“/”是Linux风格的路径写法,因为不需要转义,所以正斜线只需要写一个就可以了。
FileReader fr = new FileReader ("c:/autoexec.bat"); //打开文本文件
如果有一堆砖要搬,一次取不完,不会一次只拿一块砖,会尽量多拿几块。如果有很多内
容要读,不会一次只读一个字节,而是一次尽量多读一些字节到缓存。
FileReader fr = new FileReader ("c:/autoexec.bat"); //打开文本文件
BufferedReader br = new BufferedReader (fr); //缓存读
String line;
while ((line = br .readLine ()) != null) { //按行读入文件
System.out.println(line);
}
fr.close(); //关闭文本文件
输入流把数据从硬盘读入随机访问存储器(Random Access Memory,简称RAM)。可以
根据输入流构建BufferedReader,实现代码如下所示。
String fileName = "SDIC.txt"; //文件名
InputStream file = new FilelnputStream (new File (fileName)); //打开输入流
//缓存读入数据
BufferedReader in = new BufferedReader(new InputStreamReader(file,"GBK"));
for循环按行读入一个文件
String fileName = "SDIC.txt"; //文件名
InputStream file = new FilelnputStream (new File (fileName));"打开输入流
//缓存读入数据
BufferedReader in = new BufferedReader(new InputStreamReader(file,"GBK"));
String line = in.readLine();
while (line != null) {
System.out.println (line);
line = in.readLine();
}
in.close ();
一般来说,Writer是把内容立即写到硬盘。如果要多次调用write方法,则批量写入效率会
更高。类似于团购,团购的价格往往比单件购买的价格低。可以使用缓存加快文件写入速度。
//使用缺省的缓存大小
BufferedWriter bw - new BufferedWriter(new FileWriter(fileName));
bw.write (”Hello,China!"); //写入一个字符串
bw.write (”\n”); //写入换行符
bw.write("Hello,World!");
bw.close(); //把缓存中的内容写入文件
使用BufferedWriter写入数据时,最后需要调用BufferedWriter的close方法。如果不关闭
文件,可能导致缓存中的数据丢失,写入文件的数据不完整。
按指定编码写入文本的完整代码如下所示。
/*
* 向文件写入字符串
*
* @param content 字符串
*
* @param fileName 文件名
*
* @param encoding 编码
*/
public static void writeToFile(String content, String fileName,
String encoding) {
try {
FileOutputStream fos = new File0utputStream(fileName);
OutputStreamWriter osw = new OutputStreamWriter(fos, encoding);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(content);
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace(); } }
如果黑板上已经有字,可以选择抹去黑板上已有的字重新写,也可以在原来的文字后继续
写。如果一个文件已经存在,可以把新的内容追加写到最后,也可以从头写入新内容,也就是
覆盖写。FileWriter的构造方法区别于这两种写入方式。
//FileWriter 构造方法 .
FileWriter( String fileName, boolean mode) throws IOException
其中的mode = false表示覆盖写,mode = true表示追加写。为了避免冲突,在一个时刻只
能有一个线程写文件。
java读取文件:文本文件的更多相关文章
- [Java]读取文件方法大全(转)
[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** ...
- Java 读取文件的内容
Java 读取文件的内容 1) CLASS_NAME: 换成自己真实的类名 2) /page/test.json: 换成自己真实的page 3) FileUtils: 来自于org.apache.co ...
- Java读取文件-BufferedReader/FileReader/InputStreamReader/FileInputStream的关系和区别
一.Java读取和存储文件数据流 Java读取文件,实际是将文件中的字节流转换成字符流输出到屏幕的过程 这里面涉及到两个类:InputStreamReader和OutputStreamWriter ...
- Java 读取文件到字符串
Java的io操作比较复杂 package cn.outofmemory.util; import java.io.BufferedReader; import java.io.FileInputSt ...
- java 读取文件流
搬运自速学堂:https://www.sxt.cn/Java_jQuery_in_action/ten-iqtechnology.html JAVA中IO流体系: 四大IO抽象类 ·InputStre ...
- java读取中文文本文件乱码问题
今天遇到的问题是这样:用java读取一个中文文本文件,但读取到的却是乱码,之前一直没有问题,查清楚后,原来是因为今天是用的windows的记事本来编辑的文件,因编码方式是的不同而导致了乱码,解决方法就 ...
- 使用java读取文件夹中文件的行数
使用java统计某文件夹下所有文件的行数 经理突然交代一个任务:要求统计某个文件夹下所有文件的行数.在网上查了一个多小时没有解决.后来心里不爽就决定自己写一个java类用来统计文件的行数,于是花了两个 ...
- Java读取文件的几种方式
package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...
- java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)
1.实现目标 读取文件,将文件中的数据一行行的取出. 2.代码实现 1).方式1: 通过BufferedReader的readLine()方法. /** * 功能:Java读取txt文件的内容 步骤: ...
- java读取文件
一个字节一个字节地读取 File file = InputStream inputStream = ...
随机推荐
- ARM Holdings
http://en.wikipedia.org/wiki/Advanced_RISC_Machines ARM Holdings (Redirected from Advanced RISC Mac ...
- nodejs websocket 聊天应用
前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前 ...
- JSP 随记
jstl <c:forEach> 遍历,多个<option>时显示"全部".单个 option时,默认选中! 引入:<%@ taglib prefix ...
- 使用C#解决部分Win8.1系统窗体每隔几秒失去焦点的问题
使用了Win8.1 With Update 1后,发现重新启动系统后,当前激活的窗体总是每隔几秒失去焦点.过0.5~1秒焦点回来.导致输入无法正常工作,严重影响使用心情和效率. 在网上找了非常久,也没 ...
- "Installing Software" has encountered a problem---pydev on ubuntu
"Installing Software" has encountered a problem. An error occurred while collecting items ...
- asp.net 列表控件
web空间类都被放置在System.Web.UI.WebControls命名空间下1.ListBox ListBox控件用于创建多选的下拉列表,而可选项是通过ListItem元素来定义的.示例代码如 ...
- IP address could not be resolved: Name or service not known
[root@test ~]# /usr/local/mysql/bin/mysqld2018-08-05T07:00:33.647509Z 0 [Warning] [MY-011070] [Serve ...
- smod包含具体的增强(具体实施对象) / CMOD 包含一组smod编写的增强
从标题来看,CMOD 是树木,smod 是树枝. 1.1 SMOD包含具体的增强,而CMOD是包含一组SMOD编写的增强. 1.2 User exits (Function module exits) ...
- PySpider安装与使用(Windows系统下)
PySpider Begin 安装pip install pyspider 在windows系统好像会出现如下问题 Command "python setup.py egg_info&quo ...
- [CPP - STL] swap技巧
最近在看<Effective STL>,[条款17:使用“交换技巧”修整过剩容量]中提到容器的成函数void swap(container& from),即实现容器对象与from对 ...