java第十七天(IO流,字符输入流,字符输出流)

81.IO流java

IO(Input/Output):输入和输出,指的是某个设备或环境进行数据的输入或者输出。例如:键盘的输入,再好比显示器就是输出设备,输出图像。数组

对于java来讲输入输出问题,java将它抽象成流对象来解决。性能

以游戏程序为中心读取文件就是输入,写入文件是输出。spa

IO流在java中从输入输出角度分类:设计

1.输入流3d

2.输出流指针

IO流在java中从数据的角度来分类:对象

1.字符流blog

文本,咱们能读的懂的均可以认为是字符流。好比:文章,java文件等等游戏

2.字节流

二进制的数据,这种数据通常用文本打开咱们读不懂。好比,图片文件,mp3文件,等等。

82.字符流

文本,咱们能读的懂的均可以认为是字符流。好比:文章,java文件等等字符流

(1)字符输出流

字符输出流命名规则以Writer结尾

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest {
    public static void main(String[] args) {
        //建立一个文件
        File file = new File("aa.txt");
        //先建立一个输出为null
        Writer writer=null;
        ////IO流是须要关闭的,若是不这样设计就不能关闭资源
        try {
            //在文件中写
            writer = new FileWriter(file);
            //写的内容是"HelloWorld!",每次修改都会自动覆盖上一次写的内容
            writer.write("HelloWorld!");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判断writer不是空防止空指针异常
            if(writer!=null){
                try {
                    //在关闭前会作flush刷新的事情
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest1 {
    public static void main(String[] args) {
        //先建立一个输出为null
        Writer writer=null;
        ////IO流是须要关闭的,若是不这样设计就不能关闭资源
        try {
            //在新建的file文件中写
            writer = new FileWriter(new File("bb.txt"));
            //写的内容是"HelloWorld!"
            writer.write("HelloWorld!");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判断writer不是空防止空指针异常
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

追加

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest1 {
    public static void main(String[] args) {
        File file = new File("aa.txt");
        //先建立一个输出为null
        Writer writer=null;
        ////IO流是须要关闭的,若是不这样设计就不能关闭资源
        try {
            //在file文件中写,后面是true,表示再写的内容是追加不是覆盖
            writer = new FileWriter(file,true);
            //写的内容是"HelloWorld!"
            writer.write("HelloWorld!");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判断writer不是空防止空指针异常
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

换行:

输出换行

把文本写入文件中\n表明换行

问题是不一样的环境下换行的方式也不同

Windows: \r\n

Linux:\n

Mac:\r

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest2 {
    public static void main(String[] args) {
        //先建立一个输出为null
        Writer writer=null;
        ////IO流是须要关闭的,若是不这样设计就不能关闭资源
        try {
            //在新建的file文件中写
            writer = new FileWriter(new File("aa.txt"),true);
            for (int i = 0; i < 100; i++) {
                //写的内容是"HelloWorld!"
                /*把文本写入文件中\n表明换行
                        问题是不一样的环境下换行的方式也不同
                Windows: \r\n
                Linux:\n
                Mac:\r
*/
                writer.write("HelloWorld!\r\n");
                ////每次写入10个helloworld的时候作一次flush
                if(i % 10 == 0){
                    writer.flush();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判断writer不是空防止空指针异常
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

写入的五种方法

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class IOTest3 {
    public static void main(String[] args) {
        //先建立一个输出为null
        Writer writer=null;
        ////IO流是须要关闭的,若是不这样设计就不能关闭资源
        try {
            //在新建的file文件中写
            writer = new FileWriter(new File("bb.txt"));
            //写的内容是"HelloWorld!"
            writer.write("HelloWorld!");
            //写入单个字符
            writer.write(98);//b
            writer.write('A');
            //写入字符数组
            writer.write(new char[]{'l','o','v','e'});
            //写入字符串的一部分
            writer.write("现在这宋老三\t",2,3);
            //写入字符数组的一部分
            writer.write(new char[]{'我','不','喜','欢','这','世','界','我','只','喜','欢','你'},0,7);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //判断writer不是空防止空指针异常
            if(writer!=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

(2)字符输入流

字符输出流命名规则以Reader结尾

单个字符读取

import java.io.*;

public class ReaderTest {
    public static void main(String[] args) {
        //建立一个文件
        File file = new File("aa.txt");
        Reader reader=null;
        //建立一个输入流对象
        try {
            reader=new FileReader(file);
            //这里read()出现的异常将下面catch (FileNotFoundException e)改为 catch (Exception e)就能够了
            int read = -1;
            read=reader.read();
            System.out.println((char)read);
            read=reader.read();
            System.out.println((char)read);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class ReaderTest1 {
    public static void main(String[] args) {
        //建立一个文件
        File file = new File("aa.txt");
        Reader reader=null;
        //建立一个输入流对象
        try {
            reader=new FileReader(file);
            //这里read()出现的异常将下面catch (FileNotFoundException e)改为 catch (Exception e)就能够了
            int read = 0;
            //单个读取性能低
            while ((read=reader.read())!=-1){
                System.out.print((char)read);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Arrays;

public class ReaderTest2 {
    public static void main(String[] args) {
        //建立一个文件
        File file = new File("aa.txt");
        Reader reader=null;
        //建立一个输入流对象
        try {
            reader=new FileReader(file);
            //这里read()出现的异常将下面catch (FileNotFoundException e)改为 catch (Exception e)就能够了
            char[] c=new char[12];
            //向字符数组中添数据
            int len = reader.read(c);
            System.out.println("读取的长度是"+len+"   读取的内容是"+ Arrays.toString(c));
            len = reader.read(c);
            System.out.println("读取的长度是"+len+"   读取的内容是"+ Arrays.toString(c));
            len = reader.read(c);
            System.out.println("读取的长度是"+len+"   读取的内容是"+ Arrays.toString(c));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class ReaderTest3 {
    public static void main(String[] args) {
        //建立一个文件
        File file = new File("aa.txt");
        Reader reader=null;
        //建立一个输入流对象
        try {
            reader=new FileReader(file);
            //这里read()出现的异常将下面catch (FileNotFoundException e)改为 catch (Exception e)就能够了
            int len = 1;
            char[] c=new char[12];
            while((len=reader.read(c))!=-1){
                String str= String.valueOf(c,0,len);
                System.out.print(str);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
相关文章
相关标签/搜索