在io包里,打印流是输出最方便的类
主要包含字节打印流PrintStream,字符打印流PrintWriter
PrintStream是OutputStream的子类,把一个输出流的实例传递到打印流之后,可以更加方便地输出内容,相当于打印流把输出流重新包装一下
PrintStream类的print()方法被重载很多次print(int i)、print(boolean b)、print(char c)
PrintStream操作实例
import java.io.*; public class Test { public static void main(String[] args) { //PrintStream流输出 try{ File f1 = new File("e:\java\aaa.txt"); File f2 = new File("e:\java\bbb.txt"); PrintStream ps1 = new PrintStream(f1); PrintStream ps2 = new PrintStream(f2); ps1.println("24"); ps1.print("1 + 1 =" + 2);//更加方便的输出内容 ps2.print(24);//此方法被重载很多次 ps1.close(); ps2.close(); }catch(IOException e) { e.printStackTrace(); } //PrintStream流printf方法格式化输出 try{ String name = "宝宝"; int age = 24; float high = 1.64f; char sex = 'M'; PrintStream ps3 = new PrintStream(new FileOutputStream(new File("e:\java\ccc.txt"))); ps3.printf("姓名: %s; 年龄: %d; 身高 %f; 性别: %c",name,age,high,sex); }catch(IOException e){ e.printStackTrace(); } } }
System类对打印流的支持
System类的三个常量:
public static final PrintStream out
public static final PrintStream err
public static final InputStream in
system.out是PrintStream的对象
import java.io.*; public class Test { public static void main(String[] args) { //使用OutputStream对屏幕上进行输出 try{ OutputStream ops = System.out; ops.write("Hello Word!".getBytes()); ops.close(); }catch(IOException e) { e.printStackTrace(); } } }
import java.io.*; public class Test { public static void main(String[] args) { //读取键盘上的输入内容 try{ InputStream br = System.in; System.out.print("请输入内容:"); byte b[] = new byte[1024]; int len = br.read(b); System.out.println("键盘输入的是: "+ new String(b,0,len)); br.close(); }catch(IOException e) { e.printStackTrace(); } } }
定向输入输出
通过System类可以改变out err in的位置
public static void setOut(PrintStream out)
public static void setIn(PrintStream in)
public static void setErr(PrintStream err)
setOut操作
import java.io.*; public class Test { public static void main(String[] args) { //读取键盘上的输入内容 try{ System.setOut(new PrintStream("e:\java\aaa.txt")); System.out.println("宝宝"); }catch(IOException e) { e.printStackTrace(); } } } /* 1.此程序运行后,不会再屏幕上显示,而是储存到aaa.txt中 */
import java.io.*; public class Test { public static void main(String[] args)throws Exception { //测试写入char型和int型 PrintStream ps1 = null; ps1 = new PrintStream("e:\java\aaa.txt"); char c; int len = 0; for(c = 0;c <= 60000;c++) { ps1.print(c);//print(char c)Prints a character.在文件中写入的是字符。大小82.9kb len++; if (len >= 100) { len = 0; ps1.println(); } } FileWriter fw = null; fw = new FileWriter("e:\java\bbb.txt"); int i; len = 0; for(i = 0;i<= 60000;i++) { fw.write(i);//write(int c)Writes a single character.在文件中写入的是字符,和aaa.txt一样。大小82.3kb len++; if(len >= 100) { len = 0; fw.write(" "); } } PrintStream ps2 = null; ps2 = new PrintStream("e:\java\ccc.txt"); int j; len = 0; for(j = 0;j <= 60000;j++) { ps2.print(j);//print(int i)Prints an integer.写入的是整形。大小283kb len++; if(len >= 100) { len = 0; ps2.println(); } } ps1.close(); ps2.close(); fw.close(); } }
import java.io.*; public class Test { public static void main(String[] args)throws Exception { //按行读一个文件,输出到屏幕 BufferedReader br = new BufferedReader(new FileReader("e:\java\pkg1\Test.java")); PrintStream ps = System.out; String str = br.readLine(); while((str = br.readLine()) != null) { ps.println(str); } br.close(); ps.close(); } }
import java.io.*; import java.util.*; public class Test { public static void main(String[] args)throws Exception { //存储键盘输入内容,并加上日期,相当于记录日志。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); FileWriter fw = new FileWriter("e:\java\a.txt",true);//可以追加输入 String str = null; while((str = br.readLine()) != null) {//阻塞式方法,从标准输入System.in键盘输入。只有当我们敲回车后这局话才返回,才会执行。 if(str.equalsIgnoreCase("exit")) { //System.exit; break; } fw.write(str + " " ); fw.flush(); } fw.write("-----------------" + new Date() + "----------------" +" "); br.close(); fw.close(); } }