java中的“流”是什么
发布时间:2025-05-25 04:01:59 发布人:远客网络
一、java中的“流”是什么
在Java中,流的概念是指在程序中数据的流动。流可以分为两大类:字节流和字符流。3,字节流主要用于处理二进制数据,所有的字节流读写操作都基于java.io.InputStream和java.io.OutputStream这两个超类。4,而字符流则专门用于处理文本数据,其所有的读写操作都建立在java.io.Reader和java.io.Writer这两个超类之上。
二、java中高级流、低级流如何分
1、在输入输出里,有字节流和字符流分,这两者区别在于所操作的数据单元不同。还有另外一种认识,输入输出流可以分为节点刘和处理流(包装流),节点流有时候会被称为低级流,节点流是直接和实际的数据源相互连接的,和实际的输入输出点连接。处理流有时候也成为高级流,是对一个已存在的流进行连接或封装。区分节点流和处理流,只要看给出的参数是什么就行了,如果是一个实际的数据源,就是节点流,如果是一个流,就是处理流。如
2、PrintStream ps= new PrintStream(new FileOutputStream("out.txt"));
3、在这里,FileOutputStream就是一个节点流,PrintStream就是一个处理流。
4、至于说到,java里有哪些低级流,其实这个有很多,你可以看一下流的体系就行了。
5、InputStream类中常用的低级流有InputStream、FileInputStream等,高级流有DataInputStream和BufferedInputStream,一般高级流要封装低级流,一般以read()方法读入。OutputStream类中常用的低级流有OutputStream、PipedOutputStream等,高级流有DataOutputStream和BufferedOutputStream,一般以Writer()、Print()方法写入。字符流主要有Reader和Writer两种抽象类,Reader类中常用的低级流有FileReader等,高级流有BufferedReader、InputStreamReader等,以readLine()方法读一行字符。Writer类中常用的低级流有StringWriter、FileWriter等,高级流有BufferedWriter、PrintWriter等,以writer()和print()方法写入,如果用BufferedWriter时还要用flush()方法才能写入。
三、Java中有几种类型的流
1、FileInputStream(String name)
2、第一个构造方法是用给定的文件名name创建一个FileInputStream对象
3、第二个方法使用File对象创建FileInputStream对象
4、FileInputStream istream=new FileInputStream(“myfile.dat”);
5、File f=new File(“myfile.dat”);
6、FileInputStream istream=new FileInputStream(f);
7、FileInputStream istream=new FileInputStream(“myfile.dat”);
8、Int read();从输入流中顺序读取源中的单个字节数据,返回字节值(0~255之间的一个整数),如果到达源的末尾,则返回-1
9、Read方法还可以吧多个字节读入到字节数组中:
10、Int read(byte b[],int off,int len);
11、该类提供了基本的文件写入能力,除了从OutputStream类继承来的方法外,FileOutputStream类还提供了两个构造方法:
12、 FileOutputStream(String name)
13、 FileOutputStream(File file)
14、第一个构造方法,给指定的文件名name创建一个FileOutputStreak对象
15、第二个构造方法,使用File对象创建FileOutputStream对象
16、可以使用write()方法把字节写入到输出流到达目的地
17、 Public void write(byte b[])其功能就是把b.length个字节到输出流
18、Public void write(byte b[],int off,int len)给定字节数组中,偏移off处写入len个字节到输出流
19、FileOutputStream流顺序的写文件,只要不关闭流,每次调用write方法就顺序地向输出流写入内容,直到流被关闭。
20、以上代码见hyh.io--File/Fileinputstream/Fileoutputsream
21、以上输入输出流容易出现的问题就是:汉字乱码
22、与FileInputStream和FileOutputStream字节流相对应的是FileReader和FileWriter字符流,其分别是Reader和Writer的子类,构造方法如下:
23、使用字节读取文件时,字节流不能直接操作Unicode字符,所以Java提供字符流。由于汉字在文件中占用了两个字节,如果使用字节流,读取不当会出现乱码现象,采用字符流就可以避免这个现象,因为在Unicode字符中,一个汉字被看做一个字符。
24、如果需要每次读取一行数据,FileReader类没有提供这样的方法,所以必须把这个流再接到另外一个流伤,从后面的流中读取一行数据。Java为其命名为BufferedReader类,构造方法:
25、BufferedReader流能够读取文本行,方法是readLine()
26、通过向BufferedReader传递一个Reader对象,来创建一个BufferedReader对象,
27、FileReader inone=new FileReader(“Student.txt”);
28、BufferedReader intwo=BufferedReader(inone);
29、类似的可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据写到目的地,
30、FileWriter tofile=new FileWriter(”hello.txt”);
31、BufferedWriter out=BufferedWriter(tofile)
32、然后out使用BufferedReader类的方法:
33、Write(String s,int off,int len)把字符串s写入到文件中,off是s开始处的偏移量,len是写入的字符数量
34、代码详情见hyh.javaio.FileReaderandWriter
35、代码总结:FileReader和FileWriter可以进行汉字的读取和写入
36、 BufferedReader有读取行的功能,readLine()
37、RandomAccessFile类创建的流指向既可以作为源也可以作为目的地。换句话说,当想对一个文件进行读写操作时,可以创建一个指向该文件的RandomAccessFile流
38、RandomAccessFile(String name,String mode)参数name用来确定一个文件名,给出流的源。参数mode取r或者rw(只读或者读写),决定对文件的访问权限。
39、RandomAccessFile(File file,String mode)参数file是一个File对象,给出源,同时也是目的地。参数mode决定访问权限。
40、该类中有一个seek(long a)方法,用来定位RandomAccessFile流的读写位置。参数a确定读写位置距离文件开头的字节个数。
41、还可以调用getFilePointer()方法或者流当前的读写位置
42、获取读写位置等。。。。。。。。
43、使用RandomAccessFile流实现一个通讯录的录入与显示系统
44、带进度条的输入流P298(这个是我自己整理的一部分的学习笔记,教材为Java2实用教程第三版(耿祥义编著),因为使用了word进行整理,首字母大写忘记取消和一些代码在myeclipse上,但是不妨碍你查看)