这篇博客是这一系列Java程序设计与基础中的最后一篇,这一篇主要讲一下Java中的输入输出和文件处理。
什么是文件的输入输出流?
然后在介绍IO的体系结构:
最重要就是这四个抽象类inputstream、outputstream、writer、reader,下面来一一介绍:
具体的构造方法和实例方法查一下API就知道了,接下来直接实际应用:
典例一:从标准输入流中输入字符,保存在文件中,然后用标准输出流输出到电脑频幕上。
package inputstream; import java.io.*; /** * 从标准输入流中读取字符 然后存入文件中 利用inputStream */ public class InputStreamDemo1 { public static void main(String[] args) throws FileNotFoundException { char ch; int data; FileInputStream fin = new FileInputStream(FileDescriptor.in); FileOutputStream fout = new FileOutputStream("C:\\Users\\闫志国\\Desktop\\demo.txt"); System.out.println("请输入一串字符,以#结尾"); while (true){ try { if (((ch = (char) fin.read())=='#')) break; else { fout.write(ch); } } catch (IOException e) { e.printStackTrace(); } } FileInputStream cin = new FileInputStream("C:\\Users\\闫志国\\Desktop\\demo.txt"); FileOutputStream cout = new FileOutputStream(FileDescriptor.out); while (true){ try { if (!(cin.available()>0)) break; data = cin.read(); cout.write(data); } catch (IOException e) { e.printStackTrace(); } } } }
注意点:
1、熟悉字符流的输入输出就行,了解大致的流程。
典例二:实现图片的复制
package inputstream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class InputStreamDemo2 { public static void main(String[] args) { try { FileInputStream fin = new FileInputStream("C:\\Users\\闫志国\\Desktop\\1.png"); FileOutputStream fout = new FileOutputStream("C:\\Users\\闫志国\\Desktop\\2.png"); byte[] b = new byte[fin.available()];//易错点 不能使用Byte fin.read(b); fout.write(b); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
上面的这两个Demo就大致介绍了IuputStream和outputStream的用法,我觉得掌握这两个小例子就可以了。接下来聊聊Reader和Writer这两个抽象类了:
典例三:读取文件,打印字符。
package inputstream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class ReaderDemo1 { public static void main(String[] args) throws IOException { try { FileReader fread = new FileReader("C:\\Users\\闫志国\\Desktop\\demo.txt"); char [] c = new char[100]; int num = fread.read(c); String s = new String(c,0,num); System.out.println(s); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
典例四:利用BufferReader和BufferWriter进行文件得复制。
package inputstream; import java.io.*; public class ReaderDemo2 { public static void main(String[] args) throws IOException { try { BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Users\\闫志国\\Desktop\\demo.txt")); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\Users\\闫志国\\Desktop\\demo1.txt")); String str; while ((str = bufferedReader.readLine())!=null){ System.out.println(str); bufferedWriter.write(str); } bufferedReader.close(); bufferedWriter.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
关于输入输出还有很多知识需要了解,但但是我觉得只要会上面得四个小栗子,在举一反三得话,应该不是什么难事,知道这些就够用得了!
最后,还是那句话,有兴趣得小伙伴一起交流啊!