Java笔记--java一行一行写入或读取数据

转自 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();
    }

  

时间: 2024-07-31 11:31:09

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

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

        假如E:/phsftp/evdokey目录下有个evdokey_201103221556.txt文件, 现在对evdokey_201103221556.txt文件进行写入或读取操作,并解决写入或读取出现的乱码问题. /**     * 一行一行读取文件,适合字符读取,若读取中文字符时会出现乱码     *      * 流的关闭顺序:先打开的后关,后打开的先关,     *       否则有可能出现java.io.IOException: Stream closed异常    

14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格

布局管理器 读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变.那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种"布局",要管理这些布局,就需要本节学习的布局管理器. 管理布局的类由java.awt包来提供,布局管理器是一组实现java.awt.LayoutManager接口的

12.6-全栈Java笔记:Java网络编程(四)

上节回顾:在学习了Socket建立客户端和服务器双向交流后,我们发现它的问答形式不够灵活. 本节课我们讲解如何在服务器和客户端之间实现聊天室~ 需要思考的问题: 服务器端:一个线程专门发送消息,一个线程专门接收消息. 客户端:一个线程专门发送消息,一个线程专门接收消息. 除了消化这段代码外,还需要思考,怎么实现一个聊天室!(难度较大!!) [示例1]聊天室服务器端 import java.io.BufferedReader; import java.io.BufferedWriter; impo

Java笔记-Java相关概念和如何实现跨平台

一.Java相关概念 1.Java语言的核心特点跨平台面向对象 2.Java的历史版本JDK1.0,JDK1.1,JDK1.2....JDK5.0,JDK6.0,JDK7.0,JDK8.0 注意:JDK5.0是一个标志性的版本,该版本引入了很多新特性. 3.Java的分类Java从1.2开始,分为三个不同的分支 JavaSE(Java Standard Edition),Java标准版,专门用来开发桌面级应用JavaEE(Java Enterprise Edititon),Java企业版,专门开

12.7-全栈Java笔记:Java网络编程(五)

UDP通讯的实现 1.DatagramSocket:用于发送或接收数据包 当服务器要向客户端发送数据时,需要在服务器端产生一个DatagramSocket对象,在客户端产生一个DatagramSocket对象.服务器端的DatagramSocket将DatagramPacket发送到网络上,然后被客户端的DatagramSocket接收. DatagramSocket有两种构造函数.一种是无需任何参数的,常用于客户端.另一种需要指定端口,常用于服务器. 常用方法:send.receive. cl

12.4-全栈Java笔记:Java网络编程(二)

 基于TCP协议的Socket编程和通信 在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器.一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别. "请求-响应"模式: Socket类:发送TCP消息 ServerSocket类:创建服务器 套接字是一种进程间的数据交换机制.这些进程既可以在同一机器上,也可以在通过网络连接的不同机器上.换句话说,套接字起到通信端点的作用.

12.3-全栈Java笔记:Java网络编程(一)

Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能.Java虚拟机负责提供与操作系统的实际连接.  InetAddress 作用:封装计算机的IP地址和DNS(没有端口信息!). 特点:这个类没有构造函数.如果要得到对象,只能通过静态方法:getLocalHost.getByName. getAllByName. getAddress.getHostName. [示例1]使用getLocalHost方法创建InetAddress对象 InetAddress ad

11.2-全栈Java笔记:Java中如何实现多线程

在JAVA中使用多线程非常简单,我们先学习如何创建和使用线程,然后结合案例再深入剖析线程的特性. 通过继承Thread类实现多线程 继承Thread类实现多线程的步骤: 1. 在Java中负责线程的这个功能的是java.lang.Thread 这个类 2. 可以通过创建 Thread 的实例来创建新的线程. 3.  每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体. 4.   通过调用Thead类的start()方法来启动一个线程. [示

12.5-全栈Java笔记:Java网络编程(三)

上节回顾:在学习了Socket在建立客户端和服务器单项通讯中,分别创建独立的Socket,并通过Socket的属性. 那么如何将两个Socket进行连接,从而达到客户端和服务器之间建立输入输出流进行通信呢?在上节中我们已经讲到,TCP/IP套接字是最可靠的双向流协议,使用TCP/IP可以发送任意数量的数据.如果发送方和接收方计算机确定好端口,他们就可以通信了,其中的端口用套接字表示. [示例1]客户端与服务器端双向交流的Socket之服务器端 import java.io.BufferedRea