IO流(2)

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/53257915

节点流

字节数组输入流 ByteArrayInputStream
字节数组输出流 ByteArrayOutputStream

将字节数组转化成流
ByteArrayInputStream(byte [] )
不用关闭
toByteArray() 输出到字节数组

处理流

输入流:DataInputStream(InputStream x) readXXX()
输出流:DataOutputStream(OutputStream x) writeXXX()

// DataInputStream/DataOutputStream 写入到文件/从文件读取
    public static void main (String [] args) throws IOException{
        File file = new File("D:/桌面/DataInputStream.txt");
        DataInputStream input = new DataInputStream(new FileInputStream(file));
//      DataOutputStream output = new DataOutputStream(new FileOutputStream(file));
        int a = 100;
        double b = 200;
        String c = "string";
//      output.writeInt(a);
//      output.writeDouble(b);
//      output.writeUTF(c);
        int d = input.readInt();
        double e = input.readDouble();
        String f = input.readUTF();
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
//      output.close();
//      input.close();

    }

对象序列化

ObjectInputStream -> readObject()
ObjectOutputStream -> writeObject()
先序列化后反序列化,对象必须使用java.io.Seriallizable接口
不是所有属性都需要序列化,用transient表示不需要序列化的属性

可变参数只能放在新蔡的最后一个位置(Closeable …)
…可变参数,处理方式与数组一致
try- with-resource


打印流和输入流

system.out
system.in
printStream

PrintStream ps = System.out
ps.println();
ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(src)))
ps.println(); //输出到文件

System.out
System.err
System.in 键盘输入

PrintStream output = new PrintStream(new FileOutputStream(new File("D:/桌面/2.txt")));
output.print("printStream");

InputStream in = System.in;//system.in 实际上是一个InputStream流

重定向

setIn()
setOut()
setErr()

System.setOut(new PrintStream(new FileOutputStream(“”)));
System.out.println(“2333”);
System.setOut(new PrintStream(new FileOutputStream(new FileDescripter.out)));//返回控制台

System.setOut(new PrintStream(new FileOutputStream("D:/桌面/3.txt")));
System.out.println("重定向");
上一篇:LeetCode 2100. 适合种地的日子(计数)


下一篇:IO流