黑马程序员 java学习笔记3-IO流之字节流与装饰设计模式
2012-02-17 15:51
926 查看
---------------------- android培训、java培训、期待与您交流! ----------------------
装饰设计模式:
当想要对已有的对象功能进行增强时,可以定义一个类,将已有对象传入,基于已有的功能,并提供加强功能,那么该自定义的类就称为装饰类。
装饰类通常会以构造方法的方式接收需要被装饰的类。
class Person{
public void chifan(){
System.out.println("吃饭");
}
}
class SuperPerson{
private Person p;
SuperPerson(Person p){
this.p = p;
}
public void superchifan(){
System.out.println("喝酒");
p.chifan();
System.out.println("吃水果");
}
}
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p = new Person();
SuperPerson sp = new SuperPerson(p);
sp.superchifan();
}
}
--------------------------------------------------------------------------------------------------------
(2)、字节流
InputStream(读),OutputStream(写)
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// writerStream3(); // 一般情况下 不建议使用这种定义一个大小刚好的数组方式。
readerStream2();
}
public static void readerStream3() throws Exception
{
FileInputStream fin = new FileInputStream("E:\\aa.txt");
byte [] by = new byte[fin.available()]; //定义一个大小刚好的缓冲区
int num = fin.read(by);
System.out.println(new String(by,0,num));
}
public static void readerStream2() throws Exception
{
FileInputStream fin = new FileInputStream("E:\\aa.txt");
byte [] buf = new byte[1024];
int num = 0;
while((num=fin.read(buf))!=-1)
{
System.out.println(new String(buf,0,num));
}
fin.close();
}
public static void writerStream() throws Exception
{
FileOutputStream fout = new FileOutputStream("E:\\aa.txt",true);
fout.write("我爱你".getBytes());
fout.close();
}
2。
FileOutputStream fw = null;
FileInputStream fi = null;
try {
fi = new FileInputStream("E:\\Project1.exe");
fw = new FileOutputStream("E:\\copy_Project1.exe");
byte [] buf = new byte[1024];
int num = 0;
while((num=fi.read(buf))!=-1)
{
fw.write(buf);
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.toString());
}
finally
{
if(fw!=null)
{
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException("复制文件失败");
}
}
if(fi!=null)
{
try {
fi.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(e.toString());
}
}
}
(3)、读取键盘录入
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
while(true)
{
int iread = in.read();
if(iread=='\r')
{
continue;
}
if(iread=='\n')
{
String s = sb.toString();
if(s.equals("over")) //当输入“over”时结束
return;
System.out.println(s);
sb.delete(0, sb.length()); //清空缓冲区
}else{
sb.append((char)iread);
}
}
-----------------例子二---------------------------------
//获取键盘录入对象
InputStream in = System.in;
//将字节流对象转换成字符流对象,使用转换流
InputStreamReader isr = new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高校操作,使用BufferedReader
BufferedReader bufr = new BufferedReader(isr);
String line = null;
while((line=bufr.readLine())!=null)
{
System.out.println(line);
}
bufr.close();
//键盘的最常用写法
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=bufr.readLine())!=null)
{
if(line.equals("over"))
break;
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.flush();
bufr.close();
---------------------- android培训、java培训、期待与您交流! ----------------------
装饰设计模式:
当想要对已有的对象功能进行增强时,可以定义一个类,将已有对象传入,基于已有的功能,并提供加强功能,那么该自定义的类就称为装饰类。
装饰类通常会以构造方法的方式接收需要被装饰的类。
class Person{
public void chifan(){
System.out.println("吃饭");
}
}
class SuperPerson{
private Person p;
SuperPerson(Person p){
this.p = p;
}
public void superchifan(){
System.out.println("喝酒");
p.chifan();
System.out.println("吃水果");
}
}
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p = new Person();
SuperPerson sp = new SuperPerson(p);
sp.superchifan();
}
}
--------------------------------------------------------------------------------------------------------
(2)、字节流
InputStream(读),OutputStream(写)
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// writerStream3(); // 一般情况下 不建议使用这种定义一个大小刚好的数组方式。
readerStream2();
}
public static void readerStream3() throws Exception
{
FileInputStream fin = new FileInputStream("E:\\aa.txt");
byte [] by = new byte[fin.available()]; //定义一个大小刚好的缓冲区
int num = fin.read(by);
System.out.println(new String(by,0,num));
}
public static void readerStream2() throws Exception
{
FileInputStream fin = new FileInputStream("E:\\aa.txt");
byte [] buf = new byte[1024];
int num = 0;
while((num=fin.read(buf))!=-1)
{
System.out.println(new String(buf,0,num));
}
fin.close();
}
public static void writerStream() throws Exception
{
FileOutputStream fout = new FileOutputStream("E:\\aa.txt",true);
fout.write("我爱你".getBytes());
fout.close();
}
2。
FileOutputStream fw = null;
FileInputStream fi = null;
try {
fi = new FileInputStream("E:\\Project1.exe");
fw = new FileOutputStream("E:\\copy_Project1.exe");
byte [] buf = new byte[1024];
int num = 0;
while((num=fi.read(buf))!=-1)
{
fw.write(buf);
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.toString());
}
finally
{
if(fw!=null)
{
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException("复制文件失败");
}
}
if(fi!=null)
{
try {
fi.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(e.toString());
}
}
}
(3)、读取键盘录入
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
while(true)
{
int iread = in.read();
if(iread=='\r')
{
continue;
}
if(iread=='\n')
{
String s = sb.toString();
if(s.equals("over")) //当输入“over”时结束
return;
System.out.println(s);
sb.delete(0, sb.length()); //清空缓冲区
}else{
sb.append((char)iread);
}
}
-----------------例子二---------------------------------
//获取键盘录入对象
InputStream in = System.in;
//将字节流对象转换成字符流对象,使用转换流
InputStreamReader isr = new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高校操作,使用BufferedReader
BufferedReader bufr = new BufferedReader(isr);
String line = null;
while((line=bufr.readLine())!=null)
{
System.out.println(line);
}
bufr.close();
//键盘的最常用写法
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=bufr.readLine())!=null)
{
if(line.equals("over"))
break;
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.flush();
bufr.close();
---------------------- android培训、java培训、期待与您交流! ----------------------
相关文章推荐
- java笔记-IO流-装饰设计模式、字节流
- 黑马程序员——Java基础——IO流、字符流、字节流、缓冲区技术、装饰设计模式、LineNumberReader等
- 黑马程序员-Java学习笔记之设计模式(单例设计模式,装饰设计模式,模板设计模式)
- 黑马程序员_基础_IO流学习笔记_文本文件读取及复制、字符流的缓冲区和装饰设计模式
- java设计模式学习笔记之装饰模式
- 黑马程序员——JAVA笔记——装饰设计模式
- JAVA学习第四十九课 — IO流(三):缓冲区2 & 装饰设计模式
- java 设计模式 学习笔记(5) 装饰模式
- 黑马程序员 学习笔记——Java 二十三设计模式之单例
- 黑马程序员-JAVA基础-IO流中的装饰设计模式
- 黑马程序员_java的IO流(对第十九课字符缓冲区及装饰设计模式的总结)
- 设计模式学习笔记--设计模式在Java I/O中的应用(装饰模式和适配器模式)
- 设计模式学习笔记---装饰模式decorator(Java版)
- 黑马程序员-JAVA学习之装饰设计模式与自定义BufferedReader
- 黑马程序员---2015.6.25java基础笔记---装饰模式--字节流拷贝图片--字节流缓冲--字节字符转化--File类
- 黑马程序员------java学习笔记之单例设计模式
- 黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】
- 黑马程序员_java基础学习笔记之单例设计模式
- 黑马程序员——Java学习笔记之12——已接触的“设计模式”总结
- java 设计模式学习笔记九 decorator装饰模式