转自 Ruthless

java一行一行写入或读取数据

链接:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html

假如E:/phsftp/evdokey目录下有个evdokey_201103221556.txt文件,

现在对evdokey_201103221556.txt文件进行写入或读取操作,并解决写入或读取出现的乱码问题。

文件内容如:

zhangsan,23,福建    
lisi,30,上海
wangwu,43,北京
laolin,21,重庆
ximenqing,67,贵州

代码如下:

/**
* 一行一行读取文件,适合字符读取,若读取中文字符时会出现乱码
*
* 流的关闭顺序:先打开的后关,后打开的先关,
* 否则有可能出现java.io.IOException: Stream closed异常
*
* @throws IOException
*/
@Test
public void readFile01() throws IOException {
FileReader fr=new FileReader("E:/phsftp/evdokey/evdokey_201103221556.txt");
BufferedReader br=new BufferedReader(fr);
String line="";
String[] arrs=null;
while ((line=br.readLine())!=null) {
arrs=line.split(",");
System.out.println(arrs[0] + " : " + arrs[1] + " : " + arrs[2]);
}
br.close();
fr.close();
} /**
* 一行一行读取文件,解决读取中文字符时出现乱码
*
* 流的关闭顺序:先打开的后关,后打开的先关,
* 否则有可能出现java.io.IOException: Stream closed异常
*
* @throws IOException
*/
@Test
public void readFile02() throws IOException {
FileInputStream fis=new FileInputStream("E:/phsftp/evdokey/evdokey_201103221556.txt");
InputStreamReader isr=new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
//简写如下
//BufferedReader br = new BufferedReader(new InputStreamReader(
// new FileInputStream("E:/phsftp/evdokey/evdokey_201103221556.txt"), "UTF-8"));
String line="";
String[] arrs=null;
while ((line=br.readLine())!=null) {
arrs=line.split(",");
System.out.println(arrs[0] + " : " + arrs[1] + " : " + arrs[2]);
}
br.close();
isr.close();
fis.close();
} /**
* 一行一行写入文件,适合字符写入,若写入中文字符时会出现乱码
*
* 流的关闭顺序:先打开的后关,后打开的先关,
* 否则有可能出现java.io.IOException: Stream closed异常
*
* @throws IOException
*/
@Test
public void writeFile01() throws IOException {
String[] arrs={
"zhangsan,23,FuJian",
"lisi,30,ShangHai",
"wangwu,43,BeiJing",
"laolin,21,ChongQing",
"ximenqing,67,GuiZhou"
};
FileWriter fw=new FileWriter(new File("E:/phsftp/evdokey/evdokey_201103221556.txt"));
//写入中文字符时会出现乱码
BufferedWriter bw=new BufferedWriter(fw);
//BufferedWriter bw=new BufferedWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("E:/phsftp/evdokey/evdokey_201103221556.txt")), "UTF-8"))); for(String arr:arrs){
bw.write(arr+"\t\n");
}
bw.close();
fw.close();
} /**
* 一行一行写入文件,解决写入中文字符时出现乱码
*
* 流的关闭顺序:先打开的后关,后打开的先关,
* 否则有可能出现java.io.IOException: Stream closed异常
*
* @throws IOException
*/
@Test
public void writeFile02() throws IOException {
String[] arrs={
"zhangsan,23,福建",
"lisi,30,上海",
"wangwu,43,北京",
"laolin,21,重庆",
"ximenqing,67,贵州"
};
//写入中文字符时解决中文乱码问题
FileOutputStream fos=new FileOutputStream(new File("E:/phsftp/evdokey/evdokey_201103221556.txt"));
OutputStreamWriter osw=new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw=new BufferedWriter(osw);
//简写如下:
//BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
// new FileOutputStream(new File("E:/phsftp/evdokey/evdokey_201103221556.txt")), "UTF-8")); for(String arr:arrs){
bw.write(arr+"\t\n");
} //注意关闭的先后顺序,先打开的后关闭,后打开的先关闭
bw.close();
osw.close();
fos.close();
}

 注意:下面三行代码

FileOutputStream fos=new FileOutputStream(new File("E:/phsftp/evdokey/evdokey_201103221556.txt"));
OutputStreamWriter osw=new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw=new BufferedWriter(osw);

解释:http://bbs.csdn.net/topics/330165652
FileOutputStream 是字节流,它一个字节一个字节的向外边送数据
OutputStreamWrite是字符流,它一个字符一个字符的向外边送数据
它们有什么区别么?
因为计算机是洋鬼子发明的,它们的英文字符占一个字节,而我们的中文是一个字符,占俩字节。
如果用stream,你读出来的英语再倒也罢了,读出来的中文可就是乱码或者一个个“????”。
如果你用WRITER,就不会有乱码了。

BufferedWriter Buffer是一个缓冲区,为什么要用BUFFER呢?
如果你直接用stream或者writer,你的硬盘可能就是一个字符或者一个字节 读写硬盘一次,
可是你用了Buffer,你的硬盘就是读了一堆数据之后,读写一下硬盘。这样对你硬盘有好处。

Java笔记--java一行一行写入或读取数据的更多相关文章

  1. Java 笔记 —— java 和 javac

    Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...

  2. java一行一行写入或读取数据

    原文:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 假如E:/phsftp/evdokey目录下有个evdokey_2 ...

  3. java版本的Kafka消息写入与读取

    安装zookeeper:  https://www.cnblogs.com/guoyansi19900907/p/9954864.html 并启动zookeeper 安装kafka https://w ...

  4. java的bio和nio写入及读取txt文件

    一.bio的写入及读取 1.采用bio之BufferedWriter 写入文件 public static void main(String[] args) throws IOException { ...

  5. 【分布式搜索引擎】Elasticsearch写入和读取数据过程

    一.Elasticsearch写人数据的过程 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)2)coordinating node,对docum ...

  6. 第十七章,txt文件的写入和读取数据结合练习(C++)

    #include <iostream> #include <fstream> int main(int argc, char** argv) { std::string str ...

  7. Java IO file文件的写入和读取及下载

    一.FileWriter 和BufferedWriter 结合写入文件 FileWriter是字符流写入字符到文件.默认情况下,它会使用新的内容代替文件原有的所有内容,但是,当指定一个true值作为F ...

  8. java笔记 -- java变量与常量的声明

    变量: 在Java中, 每一个变量属于一种类型. double salary int vacationDays; long earthPopulation; boolean done; 命名: 以字母 ...

  9. java笔记 -- java简单结构代码解析及注释

    结构代码解析 public class FirstSample { public static void main(String[] args) { System.out.println(2.0-1. ...

随机推荐

  1. ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()

    ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()   今天女票问我SqlServer的四种排序,当场写了几句Sql让她了解,现把相关Sql放上来. 首先, ...

  2. jQuery 1.6+ 中attr()与prop() 区别

    最近在写一个关于checkbox全选与取消全选的优化方法时,看到很多高手用到了.prop(). 于是在jquery的帮助文档查了一下,才知道这是在jquery 1.6.1中新加的方法,用来设置属性.但 ...

  3. java反编译工具(XJad)

    java反编译工具(XJad) 2.2 绿色版 http://www.cr173.com/soft/35032.html Demo.class     --->    Demo.java

  4. tooltips弹出框制作

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. 如何将EXCEL表导入MYSQL

            在平时的工作学习中,难免会遇到需要把EXCEL表中的数据导入到MYSQL中,比如要把EXCEL中的数据进行核对,或者要把测试用例导入到TestLink中.本人搜集相关的资料并加以实践总 ...

  6. iphone开发之适配iphone5

    iphone5出来了,从不用适配的我们也要像android一样适配不同分辨率的屏幕了.   公司产品新版本需要适配iphone5,经过一番折腾算是搞定了.下面分享给大家:   iphone5的屏幕分辨 ...

  7. 【hoj】1604 cable master

    简单,二分法,可是在oj上交的时候会有精度的限制,所以仅仅能把数扩得大一点,并且在扩的时候为防止尾数会自己主动生成一些非零数,所以还是自己吧扩到的位置设置为0,还有输出时由于%.2lf会自己有4设5入 ...

  8. [RxJS] Reactive Programming - Clear data while loading with RxJS startWith()

    In currently implemention, there is one problem, when the page load and click refresh button, the us ...

  9. [Regular Expressions] Find Repeated Patterns

    Regular Expression Quantifiers allow us to identify a repeating sequence of characters of minimum an ...

  10. 设置程序图标-初识IOS

    相信我们都很喜欢做出的程序弄成自己的图标. 在创建项目过后显示的页面中,选择App lcons and launch images,  点击App lcons Source 之后的方向符号,把里面的东 ...