标签: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