Java学习日记-----IO流 练习

分别使用字节流和字符流完成以下程序:

1. 在指定的路径下新建一个 .txt 文件 "test.txt",利用程序在文件中写入如下内容:

"Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于
1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有
卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级
计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业
环境下,Java更具备了显著优势和广阔前景。"

2. 利用程序读取 test.txt 文件的内容, 并在控制台打印

3. 利用程序复制 test.txt 为 test1.txt

package day041301;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import org.junit.Test;

public class HomeWork {
    // Mr.song

    @Test
    public void test2() {
        // FileOutputStream fos = new FileOutputStream(new File("test.txt"));
        // BufferedOutputStream bos = new BufferedOutputStream(fos);
        try {
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("test.txt")));
            String c = "Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于\r\n"
                    + "1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有\r\n"
                    + "卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级\r\n"
                    + "计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业\r\n" + "环境下,Java更具备了显著优势和广阔前景。";

            bos.write(c.getBytes());
            bos.flush();
            bos.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    // my maked
    @Test
    //文件复制。利用字符流
    public void test6() {
        BufferedReader br = null;
        BufferedWriter bw = null;
        try {
            br = new BufferedReader(new FileReader("test.txt"));
            bw = new BufferedWriter(new FileWriter("test001.txt"));
            String str;
            while((str = br.readLine()) != null) {
                bw.write(str);
            }
        }catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            if(bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
            if(br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        }
    }
    @Test
    // 用字节流读取test.txt
    public void test5() {
        BufferedInputStream bis = null;
        try {
            bis = new BufferedInputStream(new
                    FileInputStream(new File("test.txt")));
            byte[] b = new byte[10000];//若此处byte[]数组长度过小,可能会存放不下某些中文字符。
            int len;
            while((len = bis.read(b)) != -1) {
                String str = new String(b,0,len);
                System.out.print(str);
            }
        }catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(bis != null) {

                try {
                    bis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void test4() {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("test1.txt"));
            int len;
            char[] c = new char[40];
            while ((len = br.read(c)) != -1) {
                String str = new String(c, 0, len);
                System.out.print(str);
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {

            if (br != null) {

                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    @Test
    public void test3() {// 字符流
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter("test1.txt"));
            String c = "Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于\r\n"
                    + "1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有\r\n"
                    + "卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级\r\n"
                    + "计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业\r\n" + "环境下,Java更具备了显著优势和广阔前景。";
            bw.write(c);
            bw.flush();
            bw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void test1() {
        FileOutputStream fos = null;// 字节流

        try {
            fos = new FileOutputStream(new File("test.txt"));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        String c = "Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于\r\n"
                + "1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有\r\n"
                + "卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级\r\n"
                + "计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业\r\n" + "环境下,Java更具备了显著优势和广阔前景。";
        try {
            bos.write(c.getBytes());
            bos.flush();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if (bos != null) {

            try {
                bos.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}

原文地址:https://www.cnblogs.com/Gaohy/p/8900738.html

时间: 2024-10-10 05:04:44

Java学习日记-----IO流 练习的相关文章

Java学习日记-----IO流

1.java.io包下 File类:java程序中的此类的一个对象,就对应着一个文件或网络中的一个资源. Flie file1 = new File("D:\\io\\hello.txt"); File file2 = new File("D:\\IO\\io1"); >1. File既可以表示一个文件也可以表示一个文件目录 >2.   File的对象是与平台无关的 >3. File类针对于文件或文件目录,只能进行新建.删除.重命名.上层目录等等操

Java学习之IO流

转载链接:https://blog.csdn.net/zhaoyanjun6/article/details/54292148 Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了

Java学习之IO流三

1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中(高效流) 1 /** 2 * 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中 3 * @author vanguard 4 * 5 */ 6 public class Demo01 { 7 public static void main(String[] args) { 8 //键盘输入两个文件夹路径 9 Scanner sc = new Scanner(System.in); 1

Java学习之IO流四

1.用代码实现以下需求 (1)定义学生类,包含姓名(String name),性别(String gender),年龄(int age)三个属性,生成空参有参构造,set和get方法,toString方法 (2)键盘录入6个学员信息(录入格式:张三,男,25),要求有两个相同的信息,将6个学员信息存入到ArrayList集合中 (3)将存有6个学员信息的ArrayList集合对象写入到D:\\StudentInfo.txt文件中 (4)读取D:\\StudentInfo.txt文件中的Array

Java学习之IO流一

01. IO技术概述 * a: Output * 把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作 * b: Input * 把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作 * c: IO操作 * 把上面的这种输入和输出动作称为IO操作 02. File类的概述和作用 * A:File类的概述和作用 * a: File的概念 * File类是文件和目录路径名的抽象表示形式 * Java中把文件或者目录(文件夹)都封装成File对象 * 我们要去操作硬盘

Java学习之IO流总结

---恢复内容开始--- 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块区间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办?是通过一个流的方式来读的,咋恩要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以01010101010101这样的形式读取的,怎么把文件里面的数据读取出来呢?你可以把文件想象成一个小桶,文件就是一个桶, 文件里面的数据就相当于是这个桶里面的水,那么我们怎么从这个桶里面取

java学习笔记--IO流

第十二章大纲: I/O input/output 输入/输出 一.创建文件,借助File类来实现 file.createNewFile() : 创建文件 file.exists() : 判断文件是否存在,如果存在,则返回true delete() : 删除文件,如果删除成功,则返回true deleteOnExit() : 程序退出的时候才删除文件 二.创建文件夹 exists() : 判断文件夹是否存在,如果存在,则返回true delete() : 删除文件夹,如果删除成功,则返回true

Java学习之IO流(转换流)

转换流:就是对字节流和字符流之间转换的流对象 InputStreamReader:字节流到字符流的桥梁.解码 OutputStreamWriter:字符流到字节流的桥梁.编码 1 private static void readKey3() throws IOException { 2 // 字节流 3 InputStream in = System.in; 4 5 // 字节流转成字符流.解码 6 Reader r = new InputStreamReader(in); 7 // 字符流 8

Java学习之IO流(序列流--SequenceInputStream)

SequenceInputStream表示其他输入流的逻辑串联.它从输入流的有序集合开始,从第一个开始读取,直到到达文件末尾,然后从第二个开始读取,依此类推,直到在最后一个包含的输入流中到达文件末尾 构造函数 SequenceInputStream?(InputStream s1, InputStream s2) SequenceInputStream?(Enumeration<? extends InputStream> e) 实例: 1 //将1.txt,2.txt,3.txt文件合并到一