标签:size exception pac script you repeat 本地 cat 格式化
Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。
数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据(不能随机读取)。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
简而言之:数据流是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。
当程序需要读取数据的时候,就会建立一个通向数据源的连接,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会建立一个通向目的地的连接。
数据流分类:
流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable。掌握了这些就掌握了Java I/O的精髓了。
Java I/O主要包括如下3层次:
主要类如下:
java.io包里有4个基本类:InputStream、OutputStream及Reader、Writer类,它们分别处理字节流和字符流。
其他各种各样的流都是由这4个派生出来的。
按来源/去向分类:
InputStream 为字节输入流,它本身为一个抽象类,必须依靠其子类实现各种功能,此抽象类是表示字节输入流的所有类的超类。 继承自InputStream 的流都是向程序中输入数据的,且数据单位为字节(8bit);
InputStream是输入字节数据用的类,所以InputStream类提供了3种重载的read方法.Inputstream类中的常用方法:
来看看几种不同的InputStream:
OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。
几种不同的OutputStream:
Reader和InputStream类似;Writer和OutputStream类似。
有两个需要注意的:
1
2
3
4
5
6
7
8
9
|
char ch; BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); //将字节流转为字符流,带缓冲 try { while ((ch = ( char ) in.read()) != - 1 ){ System.out.print(ch); } } catch (IOException e) { e.printStackTrace(); } |
方法一:
1
2
3
4
5
6
7
8
9
10
|
BufferedReader in = new BufferedReader( new FileReader( "AtomicityTest.java" )); String s; try { while ((s = in.readLine()) != null ){ System.out.println(s); } in.close(); } catch (IOException e) { e.printStackTrace(); } |
方法二:
1
2
3
4
5
6
7
8
9
10
|
FileReader in = new FileReader( "AtomicityTest.java" ); int b; try { while ((b = in.read()) != - 1 ){ System.out.print(( char )b); } in.close(); } catch (IOException e) { e.printStackTrace(); } |
方法三:(有可能出现乱码)
1
2
3
4
5
6
7
8
9
10
11
|
FileInputStream in = new FileInputStream( "AtomicityTest.java" ); int n = 50 ; byte [] buffer = new byte [n]; try { while ((in.read(buffer, 0 ,n) != - 1 && n > 0 )){ System.out.print( new String(buffer)); } in.close(); } catch (IOException e) { e.printStackTrace(); } |
1
2
3
4
5
6
7
8
9
|
FileInputStream in = new FileInputStream( "AtomicityTest.java" ); FileOutputStream out = new FileOutputStream( "copy.txt" ); int b; while ((b = in.read()) != - 1 ){ out.write(b); } out.flush(); in.close(); out.close(); |
1
2
3
4
5
6
7
8
9
|
Scanner in = new Scanner(System.in); FileWriter out = new FileWriter( "systemIn.log" ); String s; while (!(s = in.nextLine()).equals( "Q" )){ out.write(s + "\n" ); } out.flush(); out.close(); in.close(); |
标签:size exception pac script you repeat 本地 cat 格式化
原文地址:https://www.cnblogs.com/hqtttt/p/10672847.html