Java IO流

来源:互联网 发布:c webservice json 编辑:程序博客网 时间:2024/06/03 18:19

一.File类

public void test01() throws IOException {    //文件或目录的绝对路径    File file = new File("f:/a.jpg");    file = new File("f:/","a.jpg");    //创建文件,目录必须正确,文件存在时返回false    file.createNewFile();    //创建一层目录和多层目录    file.mkdir();    file.mkdirs();    //判断方法,返回true/false    file.exists();    file.isDirectory();    file.isFile();    //获取方法    System.out.println();    //获取文件名,父目录名,父目录,完整路径,文件大小    file.getName();    file.getParent();    file.getParentFile();    file.getPath();    file.length();    //获取当前目录所有目录和文件,目录名和文件名,盘符    file.listFiles();    file.list();    File.listRoots();    //删除文件或目录(目录中有文件删除不了)    file.delete();    //移动文件或重命名    file.renameTo(new File("f:/b.jpg"));}

二.字符流

1.FileReader类和FileWriter类

public void test01() throws Exception {    //文件不存在会报错//  FileReader reader = new FileReader(new File("f:/a.txt"));    FileReader reader = new FileReader("f:/a.txt");    int num = 0;    String word = "";    char[] buf = new char[10];    //一个一个字读出来    while((num = reader.read()) !=-1) {        word += (char)num;    }    //按数组的长度读出来放数组里    while((num = reader.read(buf))!=-1) {        word += new String(buf,0,num);    }    reader.close();    System.out.println(word);}
public void test02() throws IOException {    //为false或无时,是覆盖.为true时是追加。    FileWriter w = new FileWriter("f:/b/a",false);    FileWriter w2 = new FileWriter(new File("f:/b/a"),true);    //文件不存在会自动创建,目录不存在会报错    FileWriter writer = new FileWriter("f:/b.txt");    char[] buf = {'一','二'};    //写入字符数组,字符,字符串    writer.write(buf);    writer.write('三');    writer.write("四五六");    //返回Writer对象    writer.append('七').append("八九十");    //将缓存区数据写入,    //在close中会自动调用,无须在close前显式调用    writer.flush();    writer.close();}

2.BufferedReader类和BufferedWriter类

public void test03() throws IOException {    FileReader r = new FileReader("f:/a/a.txt");    FileWriter w = new FileWriter("f:/b/b.txt");    //使用缓冲区,提高效率    BufferedReader br = new BufferedReader(r);    //允许自定义缓冲区大小(FileWriter的缓存区太小)    BufferedWriter bw = new BufferedWriter(w,1024*10);    String word;    //提供了一个读行的方法    while ((word = br.readLine())!=null) {        bw.write(word);        bw.newLine();    }    bw.close();    br.close();    r.close();    w.close();}

三.字节流

1.FileInputStream类和FileOutputStream类

public void test01() throws Exception {    FileInputStream input = new FileInputStream("f:/a.jpg");    FileOutputStream output = new FileOutputStream("f:/b.jpg");    //获取文件大小,可作为数组长度(大文件慎用)    input.available();    byte[] buf = new byte[1024];    int len;    while((len = input.read(buf))!=-1) {        output.write(buf, 0, len);    }    output.close();    input.close();}

2.BufferedInputStream类和BufferedOutputStream类

public void test02() throws Exception {    FileInputStream i = new FileInputStream("f:/a.jpg");    FileOutputStream o = new FileOutputStream("f:/b.jpg");    BufferedInputStream input = new BufferedInputStream(i);    BufferedOutputStream output = new BufferedOutputStream(o,1024*60);    byte[] buf = new byte[1024];    int len;    while((len = input.read(buf))!=-1) {        output.write(buf, 0, len);    }    output.close();    input.close();}

四.总结

类名 描述 FileReader 字符输入流 FileWriter 字符输出流 BufferedReader 缓存字符输入流 BufferedWriter 缓存字符输出流 FileInputStream 字节输入流 FileOutputStream 字节输出流 BufferedInputStream 缓存字节输入流 BufferedOutputStream 缓存字节输出流

.
五.应用

  1. 将base64编码字符串保存成文件
/** * 根据base64编码将文件保存到服务器 * @param base64  base64编码字符串 * @param filePath  服务器绝对路径 * @param fileName  文件名 */public static void base64UpFile(String base64, String filePath, String fileName) {    FileOutputStream out = null;    byte[] buffer;    try {        //获取文件对象        File file = new File(filePath, fileName);        //判断文件是否存在,不存在则创建        if (!file.exists()) {            if (!file.getParentFile().exists()) {                file.getParentFile().mkdirs();            }            file.createNewFile();        }        //获取输出流        out = new FileOutputStream(file);        //将64base编码转成数组        buffer = new BASE64Decoder().decodeBuffer(base64);        //写入文件        out.write(buffer);    } catch (Exception e) {        e.printStackTrace();    } finally {        //关闭输出流        try {            out.close();        } catch (IOException e) {            e.printStackTrace();        }    } }
原创粉丝点击