java输入、输出流知识总结

一、内容简介:

  1. File类
  2. 文件字节输入输出流
  3. 文件字符输入输出流
  4. 缓冲流
  5. 随机流
  6. 数组流
  7. 数据流
  8. 对象流
  9. 序列化与对象克隆
  10. 使用Scanner解析文件
  11. 文件锁

二、输入输出流基础

1.File类

知识点
  1. 创建File类的构造方法:
    1. File(String Filename);
    2. File(String directoryPath,String filename)
    3. File(File dir,String filename)
  2. File类的常用方法
    1. public String getName():获取文件名字
    2. public boolean canRead():判断文件是否可读
    3. public boolean canWrite():判断文件是否可被写入
    4. public boolean exists():判断文件是否存在
    5. public long length():获取文件长度
    6. public String getAbsolutePath():获取文件的绝对路径
    7. public String getParent():获取文件的父目录
    8. public boolean isFile():判断是否是一个文件
    9. public boolean isDirectory():判断是否是一个目录
    10. public boolean isHidden():判断文件是否是隐藏文件
    11. public long lastModified() :获取文件最后修改时间(毫秒数)
代码
package edu.moth12;

import java.io.File;

public class test {
    public static void main(String[] args) {
        File file = new File("D:\\java");
        getAllFile(file);
    }
     public static void getAllFile(File dir){
        File[] files = dir.listFiles();
         for (File f:
              files) {
             if(f.isDirectory())getAllFile(f);
             else{
                 String s = f.toString();
                 boolean b = s.endsWith(".java");
                 if(b) System.out.println(f);
             }
         }
     }
}

  • 运行结果:
    在这里插入图片描述

2. 文件字节输入输出流

知识点
代码
  • 代码
package edu.moth12.In_OutStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileInput_Stream {
    public static void main(String[] args) {
        int n = -1;
        byte [] a = new byte[100];
        try{
            File f = new File("D:\\data.txt");
            InputStream in = new FileInputStream(f);
            while((n = in.read(a,0,100)) != -1){
                String s = new String(a,0,n);
                System.out.print(s);
            }
            in.close();
        }catch(IOException e){
            System.out.println("File read error" + e);
        }
    }
}

  • 运行结果
    在这里插入图片描述
package edu.moth12.In_OutStream;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class FileOutput_Stream {
    public static void main(String[] args) {
        byte [] a = "新年快乐".getBytes();
        byte [] b = "Happy new year".getBytes();
        File file = new File("data.txt");
        try{
            OutputStream out = new FileOutputStream(file);
            System.out.println(file.getName()+"的大小:"+file.length()+"字节");

            out.write(a);
            out.close();
            out = new FileOutputStream(file,true);
            System.out.println(file.getName()+"的大小:"+file.length()+"字节");

            out.write(b,0,b.length);
            System.out.println(file.getName()+"的大小:"+file.length()+"字节");

            out.close();
        }catch (IOException e){
            System.out.println("Error:"+e);
        }
    }
}

  • 运行结果
    在这里插入图片描述

3. 文件字符输入、输出流

知识点
代码
  • 代码
package edu.moth12.In_OutStream;

import java.io.*;

public class FileReader_Writer {
    public static void main(String[] args) {
        File sourceFile = new File("D:\\a.txt");
        File targetFile = new File("D:\\b.txt");
        char c[] = new char[19];
        try {
            Writer out = new FileWriter(targetFile, true);
            Reader in = new FileReader(sourceFile);
            int n = -1;
            while ((n = in.read(c)) != -1) {
                out.write(c, 0, n);
            }
            out.flush();
            out.close();
        } catch (IOException e) {
            System.out.println("Error:" + e);
        }

    }
}


  • 运行结果
    在这里插入图片描述

4. 缓冲流

知识点
代码
  • 代码
package edu.moth12.In_OutStream;

import java.io.*;
import java.util.StringTokenizer;

public class Buffered_Reader {
    public static void main(String[] args) {
        File fRead = new File("D:\\a.txt");
        File fWrite = new File("D:\\b.txt");
        try{
            Writer out = new FileWriter(fWrite);
            BufferedWriter bufferedWriter = new BufferedWriter(out);
            Reader in = new FileReader(fRead);
            BufferedReader bufferedReader = new BufferedReader(in);
            String str = null;
            while((str = bufferedReader.readLine())!=null){
                StringTokenizer fenxi = new StringTokenizer(str);
                int count = fenxi.countTokens();
                str = str+"句子中的单词个数:"+count;
                bufferedWriter.write(str);
                bufferedWriter.newLine();
            }
            bufferedWriter.close();
            out.close();
            in = new FileReader(fWrite);
            bufferedReader = new BufferedReader(in);
            String s = null;
            System.out.println(fWrite.getName()+"内容:");
            while ((s = bufferedReader.readLine())!=null){
                System.out.println(s);
            }
            bufferedReader.close();
            in.close();
        }catch (IOException e){
            System.out.println(e.toString());
        }
    }
}

  • 运行结果
    在这里插入图片描述

5. 随机流

知识点
代码
  • 代码
package edu.moth12.In_OutStream;

import java.io.IOException;
import java.io.RandomAccessFile;

public class Random_01 {
    public static void main(String[] args) {
        RandomAccessFile inAndOut = null;
        int data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        try {
            inAndOut = new RandomAccessFile("D:\\a.txt","rw");
            for (int i = data.length; i >= 0; i--) {
                inAndOut.seek(i*4);
                System.out.printf("\t%d",inAndOut.readInt());
            }
            inAndOut.close();
        }catch (IOException e){

        }
    }
}

在这里插入图片描述

6. 数组流

知识点
代码
  • 代码
package edu.moth12.In_OutStream;

import java.io.*;

public class ByteArrayOutput_Stream {
    public static void main(String[] args) {
        try{
            ByteArrayOutputStream outByte = new ByteArrayOutputStream();
            byte [] byteContent = "mid-autumn festival ".getBytes();
            outByte.write(byteContent);
            ByteArrayInputStream inByte = new ByteArrayInputStream(outByte.toByteArray());
            byte backByte [] = new byte[outByte.toByteArray().length];
            inByte.read(backByte);
            System.out.println(new String(backByte));
            CharArrayWriter outChar = new CharArrayWriter();
            char [] charContent = "中秋快乐".toCharArray();
            outChar.write(charContent);
            CharArrayReader inChar = new CharArrayReader(outChar.toCharArray());
            char backChar [] = new char[outChar.toCharArray().length];
            inChar.read(backChar);
            System.out.println(new String(backChar));
        }catch (IOException e){

        }
    }
}

  • 运行结果

7. 数据流

知识点
代码
  • 代码
  • 运行结果

8.对象流

知识点
代码
  • 代码
  • 运行结果

9. 序列化与克隆对象

知识点
代码
  • 代码
  • 运行结果

10. 使用Scanner解析文本

知识点
代码
  • 代码
  • 运行结果

11. 文件锁

知识点
代码
  • 代码
  • 运行结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值