• IO流总结


    //InputStream(字节流、输入流)Reader(字符流、输入流)OutputStream(字节流、输出流)Writer(字符流、输出流)
    //InputStream-FilterInputStream(BufferedInputStream(缓冲字节输入流)、DataInputStream、LineNumberInputStream(过时)、PushbackInputStream)、
    //ByteArrayInputStream(字节数组输入流)、FileInputStream(文件输入流)、ObjectInputStream(对象输入流)、PipedInputStream、SequenceInputStream、StringBufferInputStream(过时)
    
    //OutputStream-FilterOutputStream(BufferedOutputStream(缓冲字节输出流)、DataOutputStream、PrintStream)、
    //ByteArrayOutputStream(字节数组输出流)、FileOutputStream(文件输出流)、ObjectOutputStream(对象输出流)、PipedOutputStream
    
    //Reader-BufferedReader(缓冲字符输入流)(LineNumberReader)、CharArrayReader、InputStreamReader(字符输入流)(FileReader)、FilterReader(PushbackReader)、PipedReader、StringReader
    //Writer-BufferedWriter、CharArrayWriter、OutputStreamWriter(字符输出流)(FileWriter)、FilterWriter、PipedWriter、PrintWriter(缓冲字符输出流)、StringWriter
    
    //文件操作
    File file = new File("."+File.separator+"test.txt");//文件、目录("demo"、"a"+File.separator+"b")
    boolean hasFile = file.exists();//判断当前File表示的文件或目录是否真实存在
    boolean isFile = file.isFile();//判断当前File表示的是否为一个文件
    boolean isDirectory = file.isDirectory();//判断当前File表示的是否为一个目录
    File[] subs = file.listFiles();//获取当前目录中的所有子项
    file.createNewFile();//创建该文件
    file.delete();//删除文件或目录
    file.mkdir();//创建目录
    file.mkdirs();//创建多级目录
    String name = file.getName();
    long length = file.length();
    boolean canRead =file.canRead();//可读
    boolean canWrite =file.canWrite();//可写
    boolean isHidden = file.isHidden();//是否为隐藏文件
    
    RandomAccessFile raf = new RandomAccessFile("raf.dat","rw");//rw读写,r读
    raf.write(1);//单字节、多字节write(data,0,len)
    int rafInt = raf.read();//若返回值为-1表示读取到了文件末尾
    raf.close();
    
    //输入流
    FileInputStream fis = new FileInputStream("osw.txt");//文件输入流
    byte[] data = new byte[300];
    int len = fis.read(data);
    String fisStr = new String(data,0,len,"utf-8");
    fis.close();
    InputStreamReader isr = new InputStreamReader(fis,"utf-8");//字符输入流
    int isrInt = isr.read();//-1表示不存在,用StringBuilder拼接(append((char)d))转为String
    isr.close();
    ObjectInputStream ois = new ObjectInputStream(fis);//对象输入流-对象必须实现Serializable接口
    ois.readObject();
    ois.close();
    BufferedInputStream bis = new BufferedInputStream(fis);//缓冲字节输入流,提高读取效率
    int bisInt = bis.read();//-1表示不存在
    bis.close();
    BufferedReader br = new BufferedReader(isr);//缓冲字符输入流
    br.readLine();//读取一行数据
    br.close();
    
    //输出流
    FileOutputStream fos = new FileOutputStream("osw.txt");//文件输出流(覆盖写模式、追加写模式-"fos.txt",true)
    fos.close();
    fos.write("hello".getBytes("utf-8"));
    OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");//字符输出流
    osw.write("hello");
    osw.close();
    ObjectOutputStream oos = new ObjectOutputStream(fos);//对象输出流-对象必须实现Serializable接口
    oos.writeObject("hello");
    oos.close();
    BufferedOutputStream bos = new BufferedOutputStream(fos);//缓冲字节输出流
    bos.write(1);
    bos.flush();
    bos.close();
    PrintWriter pw = new PrintWriter(osw);//缓冲字符输出流
    pw.println("hello");
    pw.close();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();//字节数组输出流
    baos.write(data, 0, len);
    byte[] buffer = baos.toByteArray();
  • 相关阅读:
    Android java synchronized原理
    Zookeeper
    图像数据通道格式:NCHW和NHWC的区别
    CAS:146185-77-5,mPEG-Alkyne,甲氧基-聚乙二醇-炔基PEG试剂供应
    ZTE ZXR10 5250 command hints
    FFmpeg 命令:从入门到精通 | ffmpeg filter(过滤器 / 滤镜)
    基于SpringBoot+VUE实现教材管理系统
    STM32外部中断
    如何在Spring Boot中配置MySQL数据库连接数
    限流神器之-Guava RateLimiter 实战
  • 原文地址:https://blog.csdn.net/linsa_pursuer/article/details/125433885