IO

1    Static静态变量,用类名来访问,不需要产生实例对象。类似于全局变量。

 

Class Chinese {

 

       Static String country=”中国”;

 

}

 

Class TextChinese{

 

       Public static void main(String[] args){

 

       System.out.println(Chineese.country);

 

}

 

}

 

也可以使用对象名的方式来访问,所以有两种访问方式。典型的用法是可以测试这种类产生了多少个个对象。

 

Static 方法 同样也有两种访问方法。和static变量使用差不多。非静态方法不能被静态方法访问。

 

Static 代码块可以用来初始化,static {   }

 

 

 

2    单态设计模式:  控制了只能产生一个对象

 

       首先把构造方法设置为private的,所以外面就不能创建对象,内部在创建一个对象,为对象的应用提供一个外部可以访问的方法,此方法必须是static的,否则外部就不能访问。那是因为外面不能创建对象。

 

内部类:

 

       外部类不能访问内部类,而内部类可以访问外部类;

 

创建内部类的方法public class Demon {

 

    int i = 9;

 

 

 

    public void show() {

 

       System.out.println("外部类");

 

    }

 

class demons {

 

       int j = 8;

 

public void shows() {

 

           System.out.println("内部类" + i);

 

       }

 

}

 

    public static void main(String[] args) {

 

       Demon d = new Demon();

 

        Demon.demons ss = d.new demons();

 

    }

 

}

3     ReaderWriter类:是所有字符流类的抽象基类,用于简化对字符串输入输出编程,即用于读写文本数据。

       二进制文件和文本文件的区别。

       编程举例:用FileWriter类向文件中写入一个字符串,然后用FileReader读出写入的内容。

import java.io.*;

public class FileStreamText {

 

    public static void main(String[] args) {

       try{

           FileWriter fos = new FileWriter("hello.txt");

           fos.write("www.it315.org");

           fos.close();

          

           char[] buf = new char[1024];

           File f = new File("helloWorld.txt");

           FileReader fis = new FileReader(f);

           int len = fis.read(buf);

           System.out.println(new String(buf, 0, len));

           fis.close();

       }catch(Exception e){

           e.printStackTrace();

       }

 

    }

}

4     编程序,实现文件的复制:

package com.TextFile;

 

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

 

public class TextFileInputStream {

 

       /**

        * @param args

        */

       public static void main(String []args){                                                          

              // TODO Auto-generated method stub

              int tr=0;

              FileInputStream in=null; //读文件

              FileOutputStream out=null;//写入文件

       try {

              in =new FileInputStream("H://java//workspers//MyDemo//src//com//TextFile//TextFileInputStream.java");

              out=new FileOutputStream("b.txt");

              while((tr=in.read())!=-1){

                     out.write(tr);     //文件的复制

                                           }

              in.close();

              out.close();

             

       } catch (FileNotFoundException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

       } catch (IOException e) {

              // TODO Auto-generated catch block

              e.printStackTrace();

       }

                 }

}

5     重视IO程序代码的复用:System.in连接到键盘,是InputStream类型的实例对象。System.out是连接到显示器,是PrintStream类的实例对象。

编程举例:将键盘上输入的内容转变成大写字母后打印在屏幕上。

import java.io.*;

 

public class PrintTest {

 

    public static void main(String[] args) {

       String str = "abcdefg";

       ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes());

       ByteArrayOutputStream bos = new ByteArrayOutputStream();

       transform(bis, bos);

       byte [] buf = bos.toByteArray();

       System.out.println(new String(buf));

       System.out.println(System.in, System.out);

   

    }

   

    public static void transform(InputStream in, OutputStream out){

       try {

           int ch = 0;

              while((ch = in.read()) != -1){

                  int upperCh = Character.toUpperCase((char)ch);

                  out.write(upperCh);

              }

          

       } catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

      

    }

 

}

6    字符编码:

              计算机里只有数字,计算机软件里的一切都是用数字来表示的,屏幕上显示的       一个个字符也不例外。

              ASCII(美国标准信息交换码)。最高bit位都为0,也就是说这写数字豆子0  127之间。

            GB2312(国标码)表示中文字符,用两个字节的数字来表示,中文字符的每         个字节的最高位bit都为1。在GB2312的基础上对更多的中文字符(包括繁体)             进行了编码,新的编码规则称为GBK。在中国大陆使用的计算机系统上,GBK      GBK2312就被称为系统的本地字符集。

7    各种过滤流和包装类:

缓冲流为I/O流增加了内存缓冲区,增加缓冲区有两个基本目的:

允许Java程序一次不只操作一个字节,这样提高率程序的性能。

由于有了缓冲区,使得在流上执行skipmark、和reset方法都成为可能。

       BufferedInputStreamBufferedOutputStream类:是Java提供的两个缓冲区包装类,不管底层系统是否使用了缓冲区,这两个类在自己的实例对象中创建缓冲。

    

  BufferedReaderBufferedWriter类:BufferedReaderreadLine方法可以一次读取一行文本,BufferedWriternewLine方法可以向字符流中写入不同操作系统下的换行符。

举例说明:InputStreamReader isr=new InputStreamReader(System.in);

  //BufferedReader 对字符的读和写起到一个缓冲作用,一达到文件读写的最高效率

         BufferedReader br=new BufferedReader(isr);

         String s=null;

         try {

                s=br.readLine();

                while(s!=null){

                       if(s.equals("quit")) break;

                       System.out.println(s.toUpperCase());

                       s=br.readLine();

                }

                br.close();

         } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

         }

        

  }

8      字节流与字符流的转换

       InputStreamReaderOutputStreamWriter,是用于将字节流转换成字符流来读写的两个类,InputStreamReader可以将一个字节流中的字节解码成字符后读取,OutputStreamWriter将字符编码成自节后写入到一个字节流中。

最好不要直接使用InputStreamReaderOutputStreamWriter类读写数据,应尽量使用BufferedWriter类包装OutputStreamWriter类,用BufferedReader类包装InputStreamReader。这样可以避免频繁地在字符和字节之间进行转换。

.

9     Java程序与其他进程的数据通信

       Java程序中可以用Proces类的实例对象来表示子进程,子进程的标准输入和输出不再连接到键盘和显示器,而是以管道流的形式连接到父进程的一个输出流和输入流对象上。

调用Proces类的getOutputStreamgetInputStream方法可以获得连接到子进程的输出流和输入流对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值