Java IO之输入输出重定向
一、前提
1.1Java的标准输入,输出分别
输入 System.in 键盘
输出 System.out 控制台
1.2System类里提供了的重定向标准输入,输出的方法
static void setErr(PrintStream err); //重定向”标准” 错误输出流.
static void setIn(InputStream in); //重定向”标准” 输入流
static void setOut(PrintStream out); //重定向”标准” 输出流.
二、实现
2.1重定向”标准” 输入流
[code]public static void main( String[] args ) { File file = new File("src//main//resources//readeMe.txt"); //文件 try { FileInputStream fileInputStream = new FileInputStream(file); //输入流 System.setIn(fileInputStream); //将标准输入流重定向到 fileInputStream 流 Scanner scanner = new Scanner(System.in); //获取标准输入 scanner.useDelimiter("\n"); //只把 回车 作为换行符 while (scanner.hasNext()) System.out.println(scanner.next()); //打印 fileInputStream.close(); //关闭资源 } catch (FileNotFoundException e) { e.printStackTrace(); } }
2.2重定向”标准” 输出流
需要使用打印流 Java.io.outputstream.PrintStream
[code]public static void main( String[] args ) { File file = new File("src//main//resources//readeMe.txt"); //目的地 try { FileOutputStream fileOutputStream = new FileOutputStream(file); //输出流 PrintStream printStream = new PrintStream(fileOutputStream); //实例化PrintStream System.setOut(printStream); //标准输出流 System.out.println("Hello World!"); //输出 printStream.close(); //关闭资源 fileOutputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } }
PrintStream可以操作:1:File对象。2:字符串路径。3:字节输出流。
前两个都JDK1.5版本才出现。而且在操作文本文件时,可指定字符编码了。
当目的是一个字节输出流时,如果使用的println方法,可以在printStream对象上加入一个true参数。这样对于println方法可以进行自动的刷新,而不是等待缓冲区满了再刷新。最终print方法都将具体的数据转成字符串,而且都对IO异常进行了内部处理。既然操作的数据都转成了字符串,那么使用PrintWriter更好一些。因为PrintWrite是字符流的子类,可以直接操作字符数据,同时也可以指定具体的编码。
PrintWriter:具备了PrintStream的特点同时,
该对象的目的地有四个:1:File对象。2:字符串路径。3:字节输出流。4:字符输出流。
2.2.1使用PrintWriter
[code] public static void main( String[] args ) { File file = new File("src//main//resources//readeMe.txt"); try { FileWriter fileWriter = new FileWriter(file); PrintWriter printWriter = new PrintWriter(fileWriter,true);//使用PrintWriter printWriter.println(" ^-^ Hwllo World!"); printWriter.close(); fileWriter.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } }
注意:
System.in,System.out这两个标准的输入输出流,在jvm启动时已经存在了。随时可以使用。当jvm结束了,这两个流就结束了。但是,当使用了显示的close方法关闭时,这两个流在提前结束了。
三、对象流的使用
ObjectInputStream ObjectOutputStream
3.1写入
[code]public static void writeObject(){ File file = new File("src//main//resources//readeMe.txt"); try { FileOutputStream fileOutputStream = new FileOutputStream(file); ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); Student stu1 = new Student("IT1901","您好",20); Student stu2 = new Student("IT1903","哈哈",21); Student stu3 = new Student("IT1902","嘿嘿",22); ArrayList<Student> list = new ArrayList<>(); list.add(stu1); list.add(stu2); list.add(stu3); objectOutputStream.writeObject(list); objectOutputStream.close(); fileOutputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
3.2读出
[code]public static void readObject(){ File file = new File("src//main//resources//readeMe.txt"); try { FileInputStream fileInputStream = new FileInputStream(file); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); ArrayList<Student> students = (ArrayList<Student>) objectInputStream.readObject(); for (Student student :students) System.out.println(student); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } }
- java中的IO整理(3)----数据操作流---合并流--压缩流--输入输出重定向 - 老秋的日志 - 网易博客
- Java IO(2)阻塞式输入输出(BIO)
- java IO 文件读入,写入,重定向
- OJ中java,C++输入输出重定向的方法
- 黑马程序员--Java之IO(输入输出)(下)04
- java io新类及常用输入输出方法
- Java IO输入输出流
- JavaIO之标准输入输出(一)
- java IO 输入输出(七)
- JavaIO输入输出学习之二
- Java中输入输出(IO)和流的基本概念
- Java输入输出(IO)和流的基本概念
- Java IO之简单输入输出
- 黑马程序员--Java之IO(输入输出)(上)03
- JAVA中IO字符输入输出的文件复制
- java IO 输入输出(八)
- java io输入输出流小结
- java io 流 输入输出 大牛经典总结
- 黑马程序员——JAVA IO输入输出(二)
- java IO(输入输出) 字节缓冲流