打印流
PrintStream
构造方法:
PrintStream(File file) 接收文件
PrintStream(OutputStream out) 字节输出流
PrintStream(String fileName) 文件路径
PrintWriter
构造方法:
PrintWriter(File file) 接收文件
PrintWriter(OutputStream out) 字节输出流
PrintWriter(String fileName) 文件路径
作用 接收 键盘输入的内容
System.out 是 PrintStream 打印输出字节流
作用 输出内容到控制台
public static void main(String[] args) throws IOException {
InputStream in = System.in;
int len = 0;
StringBuilder sb = new StringBuilder();
while (true) {
if (sb.toString().endsWith("quit")) {
break;
}
len = in.read();
if (len == '\n') {
System.out.println(sb.toString());
sb.delete(0, sb.length());
}else {
sb.append((char)len);
}
}
}
public static void main(String[] args) throws IOException {
File file = new File("/Users/lanou/Desktop/level/001.txt");
PrintWriter pw = new PrintWriter(file);
pw.print("CLANNAD");
pw.print(200);
pw.print(false);
pw.flush();
pw.close();
}
public static void main(String[] args) throws IOException {
File file = new File("/Users/lanou/Desktop/level/001.txt");
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
PrintStream ps = new PrintStream(bos);
ps.println("CLANNAD");
ps.print(true);
ps.print(100);
ps.print(3.5);
ps.close();
}
}
装饰者模式(设计模式)
思想: 可以通过装饰对原来的功能进行升级
装饰者模式流程:
1. 把被装饰者 写成成员变量
2. 构造方法中 给该成员变量赋值
3. 对原有功能升级
public class Demo02 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("文件路径");
WlLineNumberReader wl = new WlLineNumberReader(fr);
String string ="";
while ((string = wl.wlReader()) != null) {
System.out.println(wl.getNum() + ": " +string);
}
wl.myClose();
}
/**
* @throws FileNotFoundException
* @throws IOException
*/
public static void fun1() throws FileNotFoundException, IOException {
FileReader reader = new FileReader("文件路径");
LineNumberReader Line = new LineNumberReader(reader);
String readLine = "";
while ((readLine = Line.readLine()) != null) {
int lineNumber = Line.getLineNumber();
System.out.println(lineNumber +" "+ readLine);
}
Line.close();
}
}
class WlLineNumberReader{
private Reader reader;
private int num = 0;
public WlLineNumberReader() {
super();
}
public WlLineNumberReader(Reader reader) {
super();
this.reader = reader;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String wlReader() throws IOException {
num ++;
int len = 0;
StringBuffer buffer = new StringBuffer();
while ((len = reader.read()) != -1) {
if (len == '\n') {
return buffer.toString();
}else {
buffer.append((char)len);
}
}
if (buffer.length() == 0) {
return null;
}
return buffer.toString();
}
public void myClose() throws IOException {
reader.close();
}
}