Java输入输出流

内容纲要

File类

  • 在Java中,使用java.io.File类对文件进行操作。
package File;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
public class FileTest {
    public static void main(String[] args) throws IOException {
        /*
        todo 创建File对象
        * 1.File file = new File("E:\\Java\\javafile.txt");
        * 2.File file = new File("E:\\Java","javafile.txt");
        * 3.File file = new File("E:\\Java");
        *   File file1 = new File("javafile.txt");
         */
        File file = new File("E:\\Java\\javafile.txt");
        /*
        todo 判断是否为目录
        * isDirectory()
        * 判断是否为文件
        * isFile()
        * 返回值都为布尔类型
         */
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
//       todo 创建文件
        File file1 = new File("E:\\Java", "HashSet");
//        判断目录是否存在
        if (!file1.exists()){
//            创建Hashset目录
            file1.mkdir();
//            创建多级目录使用
            file1.mkdirs();
        }
//       todo 创建文件
        if (!file.exists()){
            try {
                file.createNewFile();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }
}

绝对路径与相对路径

方法 说明
isAbsolute() 判断是否是绝对路径
getPath() 获取相对路径
getAbsolutePath() 获取相对路径获取绝对路径
getName() 获取文件名

字节流

  • 字节输入流:InputStream
    • 文件输入流:FileInputstream
    • 管道输入流:PipedInptStream
    • 过滤器输入流:FilterInputStream
      • 回压输入流:PushbackInputStream
      • 缓冲输入流:BufferedInputStream
      • 数据输入流:DataInputStream
    • 对象输入流:ObjectInputStream
    • 顺序输入流:SequenceInputSream
    • 字节数组输入流:ByteArrayInoutStream
    • 缓冲字符输入流:StringBufferInputStream
  • 字节输出流:OutputStream
    • 文件输出流:FileOutStream
    • 管道输出流:PipedOutStream
    • 过滤器输出流:FilterOutStream
      • 格式化输出流:PrintStream
      • 缓冲输出流:BufferedOutStream
      • 数据输出流:DataOutStream
    • 对象输出流:ObjectOutStream
    • 字节数组输出流:ByteArrayOutStream

FileInputStream

  • 从文件系统中的某个文件中或得输入字节
  • 用于读取诸如图像数据之类的原始字节流
方法名 描述
public int read() 从输入流中读取一个数据字节
pubilc int read(byte[] b) 从输入流中将最多b.lengthge字节的数据读入一个byte数组中
public int reas(byte[] b,int off,int len) 从输入流中将最多len个字节个数据读入byte数组中
pubilc void close() 关闭此文件输入流并释放与此流有关的所有系统资源

如果返回值为-1.则表示已经达到了文件末尾

FileOutputStream

方法名 描述
public int write() 将制定字节写入此文件输出流
pubilc int write(byte[] b) 将b.lengthge字节从指定byte数组中写入此文件中
public int write(byte[] b,int off,int len) 将指定byte数组中从偏移量off来时len个字节写入此文件输出流
pubilc void close() 关闭此文件输入流并释放与此流有关的所有系统资源

缓冲流

  • 缓冲输入流:BufferedInputStream
  • 缓冲输出流:BufferedOutStream
package File;
import java.io.*;
public class Buffered {
    public static void main(String[] args) {
        try{
            FileOutputStream fileOutputStream = new FileOutputStream("E:\\Java\\javafile.txt",true);//表示以追加的方式写入,默认为false
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
            FileInputStream fileInputStreamnew = new FileInputStream("E:\\Java\\javafile.txt");
            BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStreamnew);
            bufferedOutputStream.write(97);
            bufferedOutputStream.write('a');
            bufferedOutputStream.flush();
            System.out.println(bufferedInputStream.read());
            System.out.println((char)bufferedInputStream.read());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字符流

  • 字符输入流:Reader
    • BuffeerReader
      • LineNumberReader
    • CharArrayReader
    • StringReader
    • InputStreamReader
      • FileReader
    • PipedReader
    • FilterReader
      • PushbackReader
  • 字符输出流:Writer
    • BuffeerWriter
    • CharArrayWriter
    • StringWriter
    • OutputStreamWriter
      • FileWriter
    • PipedWriter
    • FilterWriter

字节字符转换流

  • InputStreamReader
  • OutputStreamWriter
FileInputStream fis = new FileInputStream("imooc.txt");
InputStreamReader isr = new InputSreamReader(fis);
FileOutputStream fos = new FileOutputStream("imooc1.txt");
OutputSteamWriter osw = new OutputStreamWriter(fos);

其他字符流

  • 字符流的读文件类:FileWirte
  • 字符流的写文件类:FileReader

对象序列化

步骤:
1.创建一个类,继承Serializable接口
2.创建对象
3.将对象写入文件
4.从文件读取对象信息
对象的读写涉及的两个类:
- 对象输入流ObjectOutputStream
- 对象输出流ObjectInputStream

THE END
分享
二维码
< <上一篇
下一篇>>