java高级_01

输入流:
从文件输入到内存,即:读文件
输出流:
从内存输出到文件,即:写文件

java高级_01_第1张图片



一 节点流(进行文件读写的基本流)

java高级_01_第2张图片

1 字符流(以字符char为单位进行读写)
  1.1 抽象父类
    Reader
    Writer
  1.2 针对文件的字符流
    FileReader
    read()  read(char[])
    FileWriter
    write() write(char[]) write(String)
2 字节流(以字节byte为单位进行读写)
  2.1 抽象父类
    InputStream
    OutputStream
  2.2 针对文件的字节流
    FileInputStream
         read()  read(byte[])
    FileOutputStream
         write(int)  write(byte[])
二 处理流(对节点流的包装,使文件读写更快速更方便)
  2.1 缓冲流(效率高)
      字符缓冲流
      BufferedReader
        readLine()
      BufferedWriter
                newLine()
      字节缓冲流
      BufferedInputStream
                read(byte[],int,int)
      BufferedOutputStream
        write(byte[],int,int)
   2.2 打印流(格式化)
      PrintWrite
               print(String) println(String)
      PrintStream
               print(String) println(String)
   2.3 Scanner
           next()  nextInt()  nextDouble()


   2.4 数据流
      DataInputStream
      DataOutputStream
   2.5 对象流(要操作的对象的类必须实现Serializable接口)
      ObjectOutputStream
      ObjectInputStream

练习:
1 复制文件
  从a.txt复制出b.txt
  注意:怎么判断文件读到结尾
2 把歌词一句一句打印出来
3 循环输入用户信息,保存到文件
  模拟登陆:键盘输入用户名和密码,检查用户名密码是否正确   

import java.io.File;
import java.io.IOException;


public class TestFile {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        File file = new File("a.txt");
        System.out.println("exists=" + file.exists());
        file.createNewFile();//创建file对象对应的文件
        System.out.println("exists=" + file.exists());
        System.out.println("dir=" + file.isDirectory());
        System.out.println("file=" + file.isFile());
    }

}
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class Testreaderwriter {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        //1 流对象
        FileReader fr = new FileReader("a.txt");
        //2 读取字符
        char c = (char)fr.read();
        System.out.println(c);
        //3 关闭
        fr.close();
        
        FileWriter fw = new FileWriter("a.txt",true);
        //2 写入字符a
        fw.write('a');
        fw.write("bcdefg");
        //3 关闭
        fw.close();
    }

}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;


public class TestFileStream {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        //读文件,输入流
        //1 搭建输入流
        //FileInputStream fis1 = new FileInputStream("a.txt");
        File file = new File("a.txt");
        File file1 = new File("b.txt");
        //如果是文件,就进行读写
        if(file.isFile())
        {
            FileInputStream fis2 = new FileInputStream(file);
            //2 从流中读取数据
            byte b = (byte)fis2.read();
            byte b1 = (byte)fis2.read();
            byte[] bs = new byte[5];
            fis2.read(bs);
            System.out.println("b = " + b + " b1 = " + b1);
            System.out.println("bs = " + Arrays.toString(bs));
            
            //3 关闭流
            fis2.close();
            
            //1 构建文件输出流
            FileOutputStream fos2 = new FileOutputStream(file1);
            //2 从流中读取数据
            fos2.write(55);
            fos2.write(56);
            fos2.write(bs);
            //3 关闭流
            fos2.close();
        }
        
        
        
    }

}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class TestBuffered {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        //缓冲流
        //1 节点流
        FileWriter fw = new FileWriter("c.txt");
        //2 处理流包装节点流
        BufferedWriter bw = new BufferedWriter(fw);
        
        bw.write("这是第一行");
        bw.newLine();
        bw.write("这是第二行");
        bw.newLine();
        
        bw.close();
        
        //1 节点流
        FileReader fr = new FileReader("c.txt");
        //2 处理流包装节点流
        BufferedReader br = new BufferedReader(fr);
        
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        
        br.close();
    }

}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;


public class TestObjectStream {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        FileOutputStream fileOutputStream = new FileOutputStream("b.txt");
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
        objectOutputStream.writeObject(new User("张三","123456"));
        objectOutputStream.close();
        
        FileInputStream fileInputStream = new FileInputStream("b.txt");
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        User user = (User)objectInputStream.readObject();
        System.out.println(user);
        objectInputStream.close();
    }

}

class User implements Serializable
{
    private String nameString;//用户名
    private String pswdString;//密码
    
    public User(String nameString,String pswdString)
    {
        this.nameString = nameString;
        this.pswdString = pswdString;
    }
    
    public String toString()
    {
        return "用户名:" + nameString + " 密码:" + pswdString;
    }
}
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;


public class TestDataStream {

    /**
     * @param args
     * @throws FileNotFoundException 
     */
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        FileOutputStream fileOutputStream = new FileOutputStream("a.txt");
        DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);
        dataOutputStream.writeInt(100);
        dataOutputStream.writeBoolean(true);
        dataOutputStream.writeDouble(100.11);
        dataOutputStream.close();
        
        FileInputStream fileInputStream = new FileInputStream("a.txt");
        DataInputStream dataInputStream = new DataInputStream(fileInputStream);
        int i = dataInputStream.readInt();
        boolean b = dataInputStream.readBoolean();
        Double d = dataInputStream.readDouble();
        System.out.println(i + "," + b + "," + d);
        dataInputStream.close();
    }

}


你可能感兴趣的:(java高级_01)