zoukankan      html  css  js  c++  java
  • 输入输出流的五种方式

    如果想要实现输出流的换行,应该用" ",只用" "是实现不了的。

    1、FileInputStream和FileOutputStream

    1 FileOutputStream fos = new FileOutputStream("D:\输入输出流.txt");
    2 String word = "输入输出流";
    3 byte [] bytes = word.getBytes();
    4 fos.write(bytes);
    5 System.out.println("写入成功");
    6 fos.close();
     1 FileInputStream fis = new FileInputStream("D:\输入输出流.txt");
     2 byte [] bytes = new byte[1024];
     3 int data;
     4 while((data=fis.read(bytes))!=-1){
     5       String str = new String(bytes,0,data);
     6       System.out.print(str);  
     7 }
     8 fis.close();
     9 /*
    10      int data = fis.read(bytes);
    11      while(data!=-1){
    12            String str = new String(bytes,0,data);
    13            System.out.println(str);
    14            data = fis.read(bytes);    
    15      }
    16 */
      

    2、FileReader和FileWriter

    1 FileReader fr = new FileReader("E:\输入输出流.txt");
    2 char [] chars = new char[1024];
    3 int data;
    4 while((data=fr.read(chars))!=-1){
    5        String str = new String(chars,0,data);
    6        System.out.println(str);
    7 }
    8 fr.close();
    1 FileWriter fw = new FileWriter("E:\输入输出流.txt");
    2 String  word = "输入输出流";
    3 fw.write(word);
    4 System.out.println("写入成功");
    5 fw.close();

    3、BufferedReader和BufferedWriter

    Reader fr = new FileReader("D:\输入输出流.txt");
    BufferedReader br = new BufferedReader(fr);
    String line;
    while((line=br.readLine())!=null){
           System.out.println(line);
    }
    br.close();
    fr.close();
    Writer writer = new FileWriter("D:\输入输出流.txt");
    BufferedWriter bw = new BufferedWriter(writer);
    String word = "输入输出流";
    bw.write(word);
    System.out.println("写入成功");
    bw.close();
    writer.close();

    4、DataInputStream和DataOutputStream

    InputStream is = new FileInputStream("D:\输入输出流");
    DataInputStream os = new DataInputStream(is);
    OutputStream os = new FileOutputStream("E:\输入输出流");
    DataOutputStream dos = new DataOutputStream(os);
    int data;
    byte [] bytes = new byte[1024];
    while((data = dis.read(bytes))!=-1) {
           dos.write(bytes,0,data);
    }

     5、序列化与反序列化

    例:使用序列化将学生对象保存到文件中,实现步骤如下:

      ① 创建学生类,实现Serializable接口

      ② 引入相关类

      ③ 创建对象输出流

      ④ 调用writeObject()方法将对象写入文件

      ⑤ 关闭对象输出流

    public class Student implements java.io.Serializable{
          private String name; // 学生姓名
          private int age; // 学生年龄
          private String gender; // 学生性别
       
          /**
             *无参构造
             */
          public Student(){
          }
          /**
             * 有参构造
             */
           public Student(String name,int age,String gender){
                     this.name = name;
                     this.age = age;
                     this.gender = gender;
           }  
           public String getName(){
                     return this.name;
           }
           public int getAge(){
                   return this.age;
           }
           public String getGender(){
                    return this.gender;
           }
    }
    public class SerializableObj {
        public static void main(String[] args) throws Exception {
            // 创建Object输出流
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\1.txt"));
            Student stu1 = new Student("安娜", 18, "女");
            Student stu2 = new Student("李卫", 20, "男");
            ArrayList<Student> list = new ArrayList<Student>();
            list.add(stu1);
            list.add(stu2);
            // 对象序列化,写入输出流
            oos.writeObject(list);
            // 关流
            oos.close();
    
        }
    }

    使用但序列化读取文件中的学生对象

    实现步骤:

         ① 引入相关类

         ② 创建对象输出流

         ③ 调用readObject()方法读取对象。

         ④ 关闭对象输出流

    public static void main(String[] args) throws Exception {
            // 创建Object输入流
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\1.txt"));
            // 反序列化,强制转换类型
            ArrayList<Student> list = (ArrayList<Student>) ois.readObject();
            // 输出生成后的对象信息
            for (Student stu : list) {
                System.out.println("姓名为:" + stu.getName());
                System.out.println("年龄为:" + stu.getAge());
                System.out.println("性别为:" + stu.getGender());
            }
            ois.close();
        }
  • 相关阅读:
    ios NSFileHandle
    ios NSString crash
    触摸方法
    代理中方法
    初始化时加载的方法
    [leetCode]209. 长度最小的子数组
    [leetCode]669. 修剪二叉搜索树
    [leetCode]763. 划分字母区间
    7.Jedis
    6.Redis事务(乐观锁)
  • 原文地址:https://www.cnblogs.com/alexanderthegreat/p/6842094.html
Copyright © 2011-2022 走看看