IO操作

    xiaoxiao2021-03-25  75

    java作为一种高级程序设计语言为我们屏蔽了许多与机器相关的细节,IO操作便是其中之一。java中的IO流主要分为两大类,字节流和字符流。字节流的父类是InputStream和OutputStream,继承它们的有, ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream; AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream等。 与InputStream和OutputStream相对应的类是Reader和Writer,它们下面又有 BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader; BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter等类继承。 java的IO流操作很好的运用了装饰者模式,下面就贴上运用IO流实现复制文件和打印文件输出的小例子。 package me.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // String commend = sc.nextLine(); System.out.println("waiting for input"); try { handler(sc.nextLine()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void handler(String commend) throws IOException { String[] parsed = commend.split(" "); if ("copy".equals(parsed[0])) { copy(parsed); } if ("cat".equals(parsed[0])) { cat(parsed); } if ("cat2".equals(parsed[0])) { cat2(parsed); } } public static void cat2(String[] parsed) { File file = new File(parsed[1]); FileInputStream fis = null; InputStreamReader isr = null; OutputStreamWriter opw = new OutputStreamWriter(System.out); try { fis = new FileInputStream(file); isr = new InputStreamReader(fis, "utf-8"); char[] temp = new char[1024]; int flag; while (-1 != (flag = isr.read(temp))) { opw.write(temp, 0, flag); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { fis.close(); isr.close(); opw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void cat(String[] parsed) { File file = new File(parsed[1]); FileInputStream fis = null; InputStreamReader isr = null; try { fis = new FileInputStream(file); isr = new InputStreamReader(fis, "utf-8"); char[] temp = new char[1024]; int flag; StringBuilder sb = new StringBuilder(); while (-1 != (flag = isr.read(temp))) { sb.append(temp, 0, flag); } System.out.print(sb); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { fis.close(); isr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void copy(String[] parsed) throws IOException { File source = new File(parsed[1]); File target = new File(parsed[2]); FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(source); fos = new FileOutputStream(target); byte[] temp = new byte[1024]; int flag; while (-1 != (flag = fis.read(temp))) { fos.write(temp, 0, flag); } } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (null != fis) { fis.close(); } if (null != fos) { fos.close(); } } } }
    转载请注明原文地址: https://ju.6miu.com/read-38885.html

    最新回复(0)