码迷,mamicode.com
首页 > 编程语言 > 详细

Java专题十一(1):IO

时间:2020-04-25 23:10:01      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:red   build   filter   ted   专题   als   containe   blob   https   

Java专题十一(1):IO

IO是基于字节流和字符流操作的

技术图片

IO基类:

Reader Writer InputStream OutputStream
字符流 ? ?
字节流 ? ?
输入流 ? ?
输出流 ? ?

各种资源IO类

Reader Writer InputStream OutputStream
File FileReader FileWriter FileInputStream FileOutputStream
Buffer BufferReader BufferWriter BufferedInputStream BufferedOutputStream
Pipe PipedReader PipedWriter PipedInputStream PipedOutputStream
String StringReader StringWriter
ByteArray ByteArrayReader ByteArrayWriter ByteArrayInputStream ByteArrayOutputStream
CharArray CharArrayReader CharArrayWriter
Object ObjectInputStream ObjectOutputStream
Filter FilterReader FilterWriter FilterInputStream FilterOutputStream
Data DataInputStream DataOutputStream

1.字节流转换成字符(InputStreamReader)

public static String byte2Char(InputStream is, String charsetName)
        throws IOException {
    if (charsetName == null || !Charset.isSupported(charsetName)){
        charsetName = DEFAULT_CHARSET;
    }
    InputStreamReader isr = new InputStreamReader(is, charsetName);
    char[] cbuf = new char[DEFAULT_BYTE_SIZE];
    StringBuilder sbf = new StringBuilder();
    int readCount;
    while((readCount = isr.read(cbuf)) > 0){
        sbf.append(cbuf, 0, readCount);
    }
    return sbf.toString();
}

2.从文件中读取字符(FileReader)

public static String readCharFromFile(String path) throws IOException {
    File fi = new File(path);
    if (fi.exists() && fi.isFile()){
        FileReader fr = new FileReader(fi);
        char[] cbuf = new char[DEFAULT_CHAR_SIZE];
        int readCount;
        StringBuilder sbf = new StringBuilder();
        while((readCount = fr.read(cbuf)) > 0){
            sbf.append(cbuf, 0, readCount);
        }
        return sbf.toString();
    }
    throw new FileNotFoundException();
}

3.字节流输出到文件(FileOutputStream)

public static File writeByteToFile(InputStream is, String path, boolean append) throws IOException {
    File fi = new File(path);
    // create file first if not exists
    if (!fi.exists()) {
        fi.createNewFile();
        append = false;
    }
    FileOutputStream fos = new FileOutputStream(fi, append);
    byte[] buf = new byte[DEFAULT_BYTE_SIZE];
    int readCount;
    while((readCount = is.read(buf)) > 0){
        fos.write(buf, 0, readCount);
    }
    fos.close();
    is.close();
    return fi;
}

4.字符输出到文件(FileWriter)

public static File writeCharToFile(String content, String path, boolean append) throws IOException {
    File fi = new File(path);
    // create file first if not exists
    if (!fi.exists()) {
        fi.createNewFile();
        append = false;
    }
    FileWriter fw = new FileWriter(fi, append);
    fw.write(content, 0, content.length());
    fw.close();
    return fi;
}

字节流转换成字符流,文件与字节,文件与字符转换操作完整代码见:
IOTools

Java专题十一(1):IO

标签:red   build   filter   ted   专题   als   containe   blob   https   

原文地址:https://www.cnblogs.com/myibu/p/12775634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!