源java,Java中的各种源

当前位置:我的异常网» 编程 » Java中的各种源

Java中的各种源

www.myexceptions.net  网友分享于:2013-12-23  浏览:3次

Java中的各种流

* 1、什么是流?

*

* 2、在java语言中,流的分类?

* 1) 方向性: 输入流(将东西输入内存为输入)和输出流(将东西从内存中取出为输出)。

* 2) 处理单位:字节流和字符流。

* 3) 是否有数据源:节点流和处理流。

*

* 3、在java语言中,所有的流类均来自java.io.*; 包。同时,它们由四个抽象的流类派生而来。

* 1) InputStream 和 OutputStream 字节的输入/输出流。

*

* 2) Reader 和 Writer 字符的输入/输出流。

*

* 4、抽象的字节输入流类: InputStream ,它提供的常用方法如下:

* 1) int read(); 用来读取一个字节,反馈其对应的整数,范围为[0,255];若反馈的是-1,表明读取完毕。

*

* 2) void close(); 用来关闭字节输入流,释放所占资源,确保数据安全。

*

* 5、抽象的字节输出流类: OutputStream ,它提供的常用方法如下:

* 1) void write(int x); 用来将给定的整数以字节方式输出,若该整数超出了[0,255]的范围,则输出后会失真。

*

* 2) void flush(); 用来将缓冲区中的数据一次性输出到目的地,确保数据输出成功。

*

* 3) void close(); 用来关闭字节输出流,释放所占资源,确保数据安全。

*

* 6、抽象的字符输入流类: Reader ,它提供的常用方法如下:

* 1) int read();  用来读取一个字符,反馈其对应的整数,范围

* 为[0,65535]。若反馈整数是 -1 ,则表明读取完毕。

*

* 2) void close(); 用来关闭字符输入流,释放所占资源。确保数据安全。

*

*7、抽象的字符输出流类: Writer ,它提供的常用方法如下:

*1) void write( int x ); 用来将给定的整数以字符方式输出,该整数的的范围为[0,65535]。它在处理汉字时,不会乱码。

*

*2) void flush(); 用来将缓冲区中的数据一次性输出到目的地,确保数据输出成功。

*

*3) void close(); 用来关闭字符输出流,释放所占资源,确保数据安全。

*

*8、针对文件操作(用来读取或存储文件)的类有两对?

*1) 文件的字节输入/输出流类:FileInputStream 和 FileOutputStream,它们分别继承自 InputStream 和 OutputStream 。

*

*2) 文件的字符输入/输出流类:FileReader 和 FileWriter ,它们分别继承自 Reader 和 Writer 。

*

*9、FileInputStream 文件的字节输入流类的作用:

*1) 它用来以字节方式读取文件内容。

*2) 它通常通过 int read(); 和 void close(); 两个方法实现文件内容的读取和输入流的关闭。

*

*10、FileOutputStream 文件的字节输出流类的作用:

*1) 它用来以字节方式将给定的数据输出。

*但是,要注意:当给定的数据超出[0,255]范围时,输出后会失真。

*2) 它通常通过 void write(int x)、void flush()和void close()三个方法完成输出和关闭功能。

*

*将FileInputStream和FileOutputStream结合起来实现文件的复制。

* 1、FileReader 文件的字符输入流类及其应用:

* 1) 它以字符的方式读取文件的内容。

*

* 2) 它的常用方法: int read() 和 void close() 两个方法来实现读取和关闭。

*

* 3) 通过案例来掌握FileReader类的应用。

*

* 2、FileWriter 文件的字符输出流类及其应用:

* 1) 它以字符的方式将给定的数据存盘。

*

* 2) 它的常用方法: void write(int x)、void flush()和void close()三个

* 方法实现数据的存盘和输出流的关闭。

*

* 3) 它的特有方法: void write(String str); 将给定的串存盘。

*

*

结论:  FileReader和FileWriter两个类只用来处理文本文件,不能处理其它特殊文件。

注:文件的换行隐藏着\r\n这两个字符

* 1、java语言中来源java.io.*包的 File类及其应用。

*

* 1) File类的作用: 用来管理计算机的资源(管理文件和文件夹)。

*

* 2) File类提供一些常用的方法用来管理文件和目录。

通过File对象可以访问文件的属性:

* boolean canRead();   canWrite();   exists();

isDirectory();     isFile();  isHidden();

long   lastModified();    length();

String  getName();      getPath();

通过File对象创建空文件或目录

Boolean  createNewFile();   delete();

mkdir();   mkdirs();

Void     deleteOnExit();//退出时删除

String[]   list();

File f=new File(path);

File[] fi=f.listFiles();或String[] fi=f.list();

File的静态属性separator存储了当前系统的路径分隔符

* String path = System.getProperty("user.dir");为当前路径

创建目录时注意:File f=new File(path,filename);

boolean a=f.getParentFile().mkdirs();

*

*1、java语言中的缓冲流有两对:

* 1) 缓冲的字节输入/输出流:

* BufferedInputStream 和 BufferedOutputStream ;

*

*  2) 缓冲的字符输入/输出流:

*  BufferedReader  和  BufferedWriter .

*

*  2、缓冲流出现的目的是什么?

*  目的就是提高输入/输出的效率。

*

*  它属于处理流,需要套接在节点流上。

*  通常缓冲的字节输入/输出流套接在字节输入/输出

*  (如: 文件的字节输入/输出流)上。

*

*  缓冲的字符输入/输了流需要套接在字符输入/输出

*  (如: 文件的字符输入/输出流)上

*

*  3、缓冲流的特有方法:

*  mark( int x ); 用来作标记。

*  reset();  用来返回到标记。

*

*  而BufferedReader缓冲的字符输入流拥有一个 String readLine()方法用来读取一行。

*

*  而BufferedWriter缓冲的字符输出流拥有一个 void newLine()方法,用来产生一个新行。另外它还有 void writer(String str)用来将字符串输出

*

* 在java语言中,提供了缓冲流来实现快速传递数据的功能。

*

* java语言提供了两对缓冲流类:

* 一对: BufferedInputStream 和 BufferedOutputStream 缓冲的字节输入/输出流。

* 另一对: BufferedReader 和 BufferedWriter 缓冲的字符输入/输出流。

快速复制任意类型的文件:

BufferedInputStream 和 BufferedOutputStream

关闭流的顺序:

bis.close(); //关闭缓冲字节输入流( 处理流 )

fis.close();//关闭文件的字节输入流( 节点流 )

bos.close();//关闭缓冲字节输入流( 处理流 )

fos.close();//关闭文件的字节输入流( 节点流 )

* 1、来自java.io.*包的 LineNumberReader 以行的方式读取文本文件的内容,它是一个处理流。因此,它需要套接在节点流,通常套接在FileReader类的对象上。

*

* 2、LineNumberReader类的常用方法:

* getLineNumber(); 用来获取行号;

* readLine(); 读取一行内容。

以行的方式读取文本文件的内容。

* 2、java语言中的数据流: DataInputStream和DataOutputStream.

*

* 1) DataInputStream和DataOutputStream称之为数据的字节输入输出流。

*

* 2) 它们的功能是什么?

* 用来处理八种基本类型的数据和字符串。

* 即:它把基本类型的数据看成是一个整体。如: 3.156 看成是一个double型的数据,而不是由3、.、1、5、6这五个字符组成的数据。因此,数据类特别适合在网络上传递基本类型的数据。

*

* 3) 数据流提供了一些专门针对八种基本类型数据和字符串操作的方法。

* writeByte();   readByte();

* writeShort();readShort();

* writeInt();readInt();

* ...

*

* writeUTF();readUTF();  //用来输出或输入字符串

*

* 4) 数据流也属于处理流,通常需要套接在节点流。如:套接在

* FileInputStream和FileOutputStream(数据流特别适合在网络上传递基本类型的数据或字符串)。

* 3、java语言中的对象流:  ObjectInputStream 和 ObjectOutputStream .

*

* 1) ObjectInputStream 和 ObjectOutputStream 称之为对象的字节输入、输出流。

*

* 2) 它们用来处理对象。即:将对象存盘到文件中或从文件中读取对象。

*

* 3) 它们属于处理流,通常需要套接在节点流,如: FileInputStream

* 和 FileOutputStream 流上。

*

* 4) 如何将对象存盘到文件中去,又如何从文件中读取的是对象。

*

* 1、java语言中的转换流有两个:

* 1) InputStreamReader ,它是一个字节转换成字符,以字符方式读取数据的一个转换流。(该方法的返回值是Reader)

*

* 2) OutputStreamWriter ,它是一个字符转换成字节,以字节方式输出数据。

*

* 2、在什么情况下需要转换流?

* 当给的是字节流,而要的是字符流时,则需要转换。

* 当给的是字符流,而要的是字节流时,则需要转换。

*

* 3、转换流也属于处理流。因此,它们也需要套接在节点流上。

*

* 4、在创建转换流时,还可指定字符的编码集。

*

* 5、通过 FileOutputStream 来存储汉字时会乱码,然而,可通过转换流OutputStreamWriter 来解决。

*

* 6、通过 FileInputStream 来读取带汉字的文件内容时会乱码,然而,

* 也可通过转换流InputStreamReader来解决。

*

* 7、java控制台的输入是通过 java.util.Scanner类来实现的。

* java5.0以前没有Scanner类,那它是如何输入的?

* 答案: 采用流技术来实现控制台输入。

* BufferedReader br = null;

br = new BufferedReader( new InputStreamReader( System.in ) );

System.out.print("请输入数据[exit退出]>>>> ");

try {

String str = br.readLine();

while( !str.equalsIgnoreCase("exit") ){…}

*

*

* 1、java语言中的打印流有两个:

*

* 1) PrintStream 字节的打印流。

*

* 2) PrintWriter 字符的打印流。

*

* 2、PrintStream 和 PrintWriter 打印流提供的常用方法如下:

* print() 和 println() 两个方法且它们是重载的,可实现

* 各种数据的打印输出。

*

* 3、打印流均属于输出流,且它们具有自动调用 flush()方法的功能(PrintWriter不行,有时需要调用flush()才可正常打印)。

* PrintStream 字节打印流还具有自动将字符转换为字节流的功能。

*

* 4、例: 将[0, 60000]编码范围的字符以打印流的方式存盘到指定的文件中。

*

//1 准备存盘的文件

String path = "f:\\chars.txt";

//2 声明

PrintStream  ps = null;

//3 创建

ps = new PrintStream( path );

PrintStream old = System.out; //记住系统默认的Out

System.setOut( ps ); //改变了系统默认的Out

//4 存盘

for(char ch = 0;  ch <= 60000;  ch++){

//ps.print( ch );

//ps.print(" ");

System.setOut( old ); //还原系统默认的Out

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值