java IO流基础总结二
在之前的博客中只是介绍了一些IO流中的基础知识和四个最简单的例子。本篇博客将继续用几个例子来深入研究IO流。
文件的拷贝:本例演示了将I:/eclipse workpace/IO流/a.txt拷贝到I:/eclipse workpace/IO流/copy.txt。
public class FileCopy { public static void main(String[] args) { // TODO Auto-generated method stub copy("I:/eclipse workpace/IO流/a.txt","I:/eclipse workpace/IO流/copy.txt"); } public static void copy(String src,String dest) { File srcFile = new File(src); File destFile = new File(dest); InputStream is = null; OutputStream os = null; try { is = new FileInputStream(srcFile); //分段读取 byte[] flush = new byte[1024]; int len = -1;//接收长度 os = new FileOutputStream(destFile); while((len=is.read(flush)) != -1) { os.write(flush,0,len); } os.flush(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (null != os) { os.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if (null != is) is.close(); } catch (IOException e) { // TODO: handle exception e.printStackTrace(); } } } }
转换流: InputStreamReader/OutputStreamWriter用来实现将字节流转化成字符流。比如,如下场景:
System.in是字节流对象,代表键盘的输入,如果我们想按行接收用户的输入时,就必须用到缓冲字符流BufferedReader特有的方法readLine(),但是经过观察会发现在创建BufferedReader的构造方法的参数必须是一个Reader对象,这时候我们的转换流InputStreamReader就派上用场了。
而System.out也是字节流对象,代表输出到显示器,按行读取用户的输入后,并且要将读取的一行字符串直接显示到控制台,就需要用到字符流的write(String str)方法,所以我们要使用OutputStreamWriter将字节流转化为字符流。
public class ConvertTest { public static void main(String[] args) { // TODO Auto-generated method stub BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); String mString =""; while(mString !="exit") { try { mString = reader.readLine(); writer.write(mString); writer.newLine(); writer.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }a } } }
Apache IOUtils和FileUtils类库为我们提供了更加简单、功能更加强大的文件操作和IO流操作功能。打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:
-
cleanDirectory:清空目录,但不删除目录。
-
contentEquals:比较两个文件的内容是否相同。
-
copyDirectory:将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的 文件。
-
copyFile:将一个文件拷贝到一个新的地址。
-
copyFileToDirectory:将一个文件拷贝到某个目录下。
-
copyInputStreamToFile:将一个输入流中的内容拷贝到某个文件。
-
deleteDirectory:删除目录。
-
deleteQuietly:删除文件。
-
listFiles:列出指定目录下的所有文件。
-
openInputSteam:打开指定文件的输入流。
-
readFileToString:将文件内容作为字符串返回。
-
readLines:将文件内容按行返回到一个字符串数组中。
-
size:返回文件或目录的大小。
-
write:将字符串内容直接写到文件中。
-
writeByteArrayToFile:将字节数组内容写到文件中。
-
writeLines:将容器中的元素的toString方法返回的内容依次写入文件中。
-
writeStringToFile:将字符串内容写到文件中。
虽然FileUtils提供了这么多方法,让IO流操作变得更加简单,但是我们仍然需要理解IO流的知识,掌握常用的类和方法。
- 黑马程序员---Java基础总结--IO流
- 黑马程序员_Java基础:IO流总结
- 黑马程序员 Java基础知识总结-IO流(应用总结)
- Java基础之IO流知识点总结二
- Java基础针对自己薄弱环节总结07(递归、IO流)
- java基础学习总结—— IO流
- java基础学习_IO流01_异常、File类_day19总结
- 黑马程序员-JAVA基础学习日记八——IO流的学习总结
- Java基础知识强化之IO流笔记42:IO流总结(图解)
- Java基础-21总结字符流,IO流编码问题,实用案例必做一遍
- Java基础-20总结,递归,IO流
- 基础入门:关于JavaIO流学习总结
- java基础_IO流学习总结
- JAVA基础学习--IO流总结<二>
- Java基础之IO流学习总结
- 黑马程序员---java基础---IO流总结
- Java基础-19总结IO流,异常try…catch,throws,File类
- Java基础知识总结之IO流
- JAVA基础学习--IO流总结<一>
- 黑马程序员-Java基础总结10——IO流体系(一)