分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
---|---|---|---|---|
抽象基类 | InputStream | OutputStream | Reader | Writer |
访问文件 | FileInputStream | FileOutputStream | FileReader | FileWriter |
访问数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
访问管道 | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
转换流 | InputStreamReader | OutputStreamWriter | ||
对象流 | ObjectInputStream | ObjectOutputStream | ||
抽象基类 | FilterInputStream | FilterOutputStream | FilterReader | FilterWriter |
打印流 | PrintStream | PrintWriter | ||
特殊流 | DataInputStream | DataOutputStream |
IDEA中,在@Test标注的单元测试方法下,File中相对路径的基础路径为模块名,而在main方法中,File中相对路径的基础路径为工程名
FileReader fileReader = null; try { fileReader = new FileReader(new File("hello.txt")); // 无参的read方法一次只能读一个字符(返回值为int类型,可以强转为char类型) char[] arr = new char[10]; // 传入字符数组,则会将内容读入到字符数组中,能装满就装满,返回值为装入多少个字符 int count; while ((count = fileReader.read(arr)) != -1) { // 注意要调用String的此种构造参数,否则如果读不满,会将剩下的脏数据输出(每次填入char数组时不会清空,只会覆盖对应位置的数据) System.out.print(new String(arr, 0, count)); } fileReader.read(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fileReader != null) { try { fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } }