Java暑期学习第二十五天日报

一、今日学习内容:

今天学习了12.2.1字节流和字符流的内容。

二、遇到的问题:

三、明日计划:

明天计划学习12.2.2过滤流、12.2.3内存操作流、12.2.4缓冲流的内容。

今日学习的具体内容:

字节流和字符流

输出流(从计算机流入外部) 对输出流只能进行写操作
输入流(从外部流入计算机) 对输入流只能进行读操作
字节流 主要操作字节序列的对象,如对二进制文件、图片、影响文件的操作。
字符流 主要操作字符列的对象,如文本文件

1.字节流

(1)输出字节流——OutputStream

OutputStream是所有字节输出流的父类,它是一个抽象类。

OutputStream FileOutputStream
ByteArrayOutputStream
StreamBufferedOutputStream

ByteArrayOutputStream、FileOutputStream是两种基本的介质流,分别向Byte数组和本地文件写入数据。ObjectOutputStream和FilterOutputStream的子类都是装饰流。

(2)使用字节输出流OutputStream的定义如下:

public abstract class OutoutStream extends Object implements Closeable,Flushable

在此类中定义了几个常用的方法:

关闭流 public void close()throws IOException
写一组数据 public void write(byte[] b) throws IOException
写一个数据 public void write(int b) throws IOException  若想对OutputStream进行实例化且进行文件操作,需要使用FileOutputStream子类
构造 public FileOutputStream(File file )throws FileNotFoundException

实例——使用字节流追加内容

import java.io.OutputStream;
import java.io.IOException;
import java.io.FileOutputStream;
public class FileOutputStreamDemo2 {
    public static void main(String [] args) throws IOException {
        out();
    }
    public static void out()throws IOException{
        OutputStream out=null;
        try {
        out=new FileOutputStream("D:\\hello.txt",true);
        String info="Hello php!";
        byte []buf=info.getBytes();
        out.write(buf);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if(out!=null)
                {
                    out.close();
                    System.out.println("输出完成!");
                }
                
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }     
        }
    }
}

测试截图:

    

 2.输入字节流——InputStream

(1)InputStream是所有字节输出流的父类,它是一个抽象类。

InputStream FileInputStream
ByteArrayInputStream
StringBufferInputStream

ByteArrayIntputStream、FileInputStream、StringBufferInputStream是三种基本的介质流,分别向Byte数组、本地文件和StringBuffer中读取数据。ObjectInputStream和FilterInputStream的子类都是装饰流。

(2)使用字节输入流InputStream的定义如下:

public abstract class InoutStream extends Object implements Closeable

在此类中定义了几个常用的方法:

关闭 public void close()throws IOException
读取一组内容 public int read (byte[] b)throws IOException
读取一个字节 public abstract int read()throws IOException

实例——使用字节流输入流读取文件内容

import java.io.IOException;
import java.io.FileInputStream;
public class FileInputStreamDemo {
    public static void main(String[] args)throws IOException{
        in();
    }
    public static void in(){
        FileInputStream input=null;
        try {
            input=new FileInputStream("D:\\HelloWorld.java");
            byte[] buf=new byte[1024];
            int len=-1;
            while((len=input.read(buf))!=-1)
            {
                String s=new String (buf,0,len);
                System.out.println(s);
            }
        }
        catch(IOException e) {
            e.printStackTrace();
        }
        finally
        {
            try
            {
               if(input!=null)
               {
                  input.close();
               }
            }
            catch(IOException e) {
                e.printStackTrace();
            }
        }        
    }
}

测试截图:

3.字符流输出流

(1)Writer是字符输出流,是一个抽象类,需要用子类FileWriter来操作文件。

实例——使用字符输出流输入内容

//如果需要追加内容只需要新的构造函数即:

 因此只需要

FileWriter fw=new FileWriter("D:\\write.txt",true);该语句即可。
FileWriter fw=new FileWriter("D:\\write.txt");该语句表示每次运行都会覆盖原来的内容。
 
import java.io.FileWriter;
import java.io.IOException;
public class WriterDemo {
    public static void main(String [] args)throws IOException{
        write();
    }
    public static void write()throws IOException{
        FileWriter fw=new FileWriter("D:\\write.txt",true);
        fw.write("231133");
        fw.close();
    }

}

测试截图:

4.字符输入流——Reader

FileReader是字符输入流,是一个抽象类,需要同FileReader进行实例化。

实例——使用字符输入流读取内容

import java.io.IOException;
import java.io.Reader;
import java.io.FileReader;
public class ReaderDemo {
    public static void main(String[] args)throws IOException{
            read();
        }
    public static void read()throws IOException{
        FileReader fr=new FileReader("D:\\hello.txt");
        char[] buf=new char[1024];
        int len=-1;
        while((len=fr.read(buf))!=-1)
        {
            String s=new String(buf,0,len);
            System.out.println(s);
        }
        fr.close();
    }
        
}

测试截图;

     

原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/13404449.html