java的io流总结大全

IO流

File类:

获取功能的方法
    - public String getAbsolutePath() :返回此File的绝对路径名字符串。
    - public String getPath() :获取的是构造路径(创建该File对象使用的路径)
    - public String getName()  :返回由此File表示的文件或目录的名称。
    - public long length()  :返回由此File表示的文件的字节大小。注意不能获取文件夹的字节大小
判断功能的方法
    - public boolean exists() :此File表示的文件或目录是否实际存在。
    - public boolean isDirectory() :此File表示的是否为目录。
    - public boolean isFile() :此File表示的是否为文件。
创建删除功能的方法
    - public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
    - public boolean delete() :删除由此File表示的文件或目录。注意不能删除非空文件夹,只能删除空文件夹和文件
    - public boolean mkdir() :创建由此File表示的目录。
    - public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

目录遍历的方法
     - public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
     - public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
注意:调用listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历。
注意:调用listFiles方法的File对象,表示的目录如果没有访问权限,就会返回null,无法进行遍历。
字节输出流
    OutputStream
       --FileOutputStream 
            ---public FileOutputStream(String name)
            ---public FileOutputStream(File file)
字节输入流
        --InputStream
            ---public FileInputStream(String name)
            ---public FileInputStream(File file)

字符输入流Reader
       --Reader
            ---public FileReader(String fileName)
            ---public FileReader(File file)
字符输出流Writer
        --Writer
            ---public FileReader(String fileName)
            ---public FileReader(File file)

eg:拷贝文件

//字节流拷贝文件
File aFile = new File("exercise\\src\\hong\\练习的包\\Day10_io流\\file\\a.txt");
File zhangFile = new File("exercise\\src\\hong\\练习的包\\Day10_io流\\file\\zhang.txt");
FileOutputStream fileOutputStream = new FileOutputStream(zhangFile);
FileInputStream fileInputStream = new FileInputStream(aFile);
byte[] bytes=new byte[1024];
int read ;
while ((read = fileInputStream.read(bytes))!=-1){
    fileOutputStream.write(bytes,0,read);
}
fileInputStream.close();
fileOutputStream.close();
//字符流拷贝文件
FileReader fileReader = new FileReader("exercise\\src\\hong\\练习的包\\Day10_io流\\file\\char.txt");
FileWriter fileWriter = new FileWriter("exercise\\src\\hong\\练习的包\\Day10_io流\\file\\charCopy.txt");
int len;
char[] chars=new char[1024];
while ((len=fileReader.read(chars))!=-1){
    fileWriter.write(chars,0,len);
}
fileWriter.write("zhangyuhong",0,5);
fileWriter.close();
fileReader.close();

try catch finally捕获异常


jdk1.7以后IO异常的处理: try-with-resource 语句,该语句确保了每个资源在语句结束时关闭。---->关闭流的操作就不需要了,自动执行
try(创建流对象的语句,如果多个,使用';'隔开){
读写数据
}catch(异常类型 变量名){
}
eg:
try (
        // 1.创建字节输入流对象,关联数据源文件路径
        FileInputStream fis = new FileInputStream("day11\\aaa\\hb.jpg");
        // 2.创建字节输出流对象,关联目的地文件路径
        FileOutputStream fos = new FileOutputStream("day11\\aaa\\hbCopy2.jpg");
) {catch (IOException e) {
}
以前的处理方式
try {
}catch(IOException e){
}finally{
判空,捕获异常,一层finally套一层}

缓存io流

字节缓冲流:BufferedInputStream,BufferedOutputStream(传入一个FileInputStream或FileOutputStream)---》无多余的方法
     BufferedInputStream bis = new BufferedInputStream(new FileInputStream("path"));
     BufferedOutputStream bis = new BufferedOutputStream(new FileOutputStream("path"));

字符缓冲流:BufferedReader,BufferedWriter(传入一个FileReader或FileWriter)-->多了readLine()newLine()方法
     BufferedReader br = new BufferedReader(new FileReader("path"));
     BufferedWrite br = new BufferedWrite(new FileWrite("path"));

字符转换io流

转换输入流InputStreamReader
     - InputStreamReader(InputStream in) 创建一个转换输入流,使用平台默认的字符编码  idea默认的是utf8,myeclipse是gbk
     - InputStreamReader(InputStream in, String charsetName):创建一个转换输入流,通过参数charsetName指定字符编码编码字符串(utf8)(gbk)
            InputStreamReader isr = new InputStreamReader(new FileInputStream("path"))
           
转换输出流OutputStreamWriter
            OutputStreamWriter isr = new OutputStreamWriter(new FileOutputStream("path"))

字节序列化io流
(对象持久化,存在本地)

序列化流ObjectOutputStream
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("path"));
     方法:
           writeObject(person);   
             1:person对象必须实现Serializable
             2:person最好在成员变量位置增加一句static final long serialVersionUID = 42L;-->防止系列化后又改了报错,加了会根据版本查序列化,改了也不会报错,不会修改的值会为默认值
            3.如果想让某个属性不参与序列化加一个关键字(transient)
反序列化流ObjectInputStream: 
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("path"));
      方法:
            readObject();    ---》不需要加参数,path路径已经代表序列化的对象

PrintStream打印io流

打印流: java.io.PrintStream 输出流
        修改System.out.println输出到文本:
             PrintStream ps = new PrintStream("指定输出到的路径");
             System.setOut(ps);    

commons-io工具包:

org.apache.commons.io.IOUtils:(文件操作)
        1. public static int copy(InputStream in, OutputStream out); 把input输入流中的内容拷贝到output输出流中,返回拷贝的字节个数(适合文件大小为2GB以下)
        2. public static long copyLarge(InputStream in, OutputStream out);把input输入流中的内容拷贝到output输出流中,返回拷贝的字节个数(适合文件大小为2GB以上)

org.apache.commons.io.FileUtils:(文件操作)
        1. public static void copyFileToDirectory(final File srcFile, final File destFile) //复制文件到另外一个目录下。
        2. public statisc void copyDirectoryToDirectory(File file1 ,File file2 );//复制file1目录到file2目录下

注意:文件夹没有的话会自动建立

Properties属性集类

继承于Hashtable ,来表示一个持久的属性集
3.1 Properties类实现了Map接口,所以可以当成是Map集合使用
3.2 Properties类当成属性集来使用,键和值的类型是String类型
3.3 Properties类可以与流一起使用,来加载文件中的数据
基本存储方法:
- public Object setProperty(String key, String value) : 保存一对属性。
- public String getProperty(String key) :使用此属性列表中指定的键搜索属性值。
- public Set<String> stringPropertyNames() :所有键的名称的集合。
与流相关的方法
    - public void load(InputStream inStream): 从字节输入流中读取键值对。
    - public void load(Reader reader):从字符输入流中读取键值对。
    参数中使用了输入流,通过流对象,可以关联到某文件上,这样就能够加载文本中的数据了。
    文本数据格式: 键值对的格式
    文本中的数据,必须是键值对形式,可以使用空格、等号、冒号等符号分隔。
    例如:
        usrername=zs
        password=123456
-----额外-----
void store(Writer writer, String comments) 把Properties对象中的数据保存到指定文件中,comments-->输入的信息,用#号连接加上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值