java IO 总结
java io流主要分为字节流和字符流
作为一个菜鸟,一直在混乱的使用IO流,用的时候并没有关注用的是哪一个类,只管弄出自己想要的结果就好了。但后来发现这样做,特别容易出错,例如乱码问题。今天就做一个小的总结。首先如何识别一个类是什么样的流呢(字节流还是字符流),有个很简单的办法,就是看类最后一个单词,如果是最后一个单词是Stream,那么对应就是字节流,同理如果是writer或reader,便是字符流。
关于类参数的问题
以文件File作为参数的类大致有FileInputStream、FileOutputStream、FileReader、FileWriter。
以IO流(如InputStream)作为参数的类大致有BufferedInputStream、DataInputStream、BufferedOutputStream、DataOutputStream、PrintStream(FilterInputStream和FilterOutputStream
的子类)
printStream这个比较特殊,既可以以File为参数,也可以以IO流作为参数
总结:判断一个类的参数类型,可以以这样的方式观察这个类,观察如果首先出现的单词是InputStream/OutputStream或Reader/Writer,那么参数便是IO流,若是File,则是以File为参数,例如:FileReader就是以File为参数的(注意是最先出现的),BufferReader是以Reader为参数
关于编码的问题
可以指定编码的类大致有:InputStreamReader/OutputStreamWriter(public InputStreamReader(InputStream in,CharsetDecoder dec)),也就是那些可以以IO流为参数的类。
总结一点IO的皮毛的知识,有不足之处望大家指出