第十周课程总结

第十周课程总结

这一周主要学习的知识就是字节流与字符流的基本操作;

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候就要使用输入流取数据,而当程序需要将一些数据保存起来的时候就要使用输出流。

一、字节流主要是操作byte类型数据,以byte数组为准,主要操作类就是Output Stream类和Input Stream类。

在Java中io操作也是是有相应步骤的,以文件为例:

  • 1)使用File类打开一个文件。
  • 2)通过字节流或字符流的子类指定输出的位置。
  • 3)进行读/写操作。

4)关闭输入/输出。

  • 1.在字节流中输出数据主要使用OutputStream类完成:Output Stream是整个IO包中字节输出流的最大父类,定义如下:
Public abstract class OutputStream
Extends Object
Implements Closeable,Flushable
package javabook;

import java.io.*;
public class JavaIO {

	public static void main(String[] args) {
		String a="holle java 学习java";
		File f=new File("d:"+File.separator+"javaxx"+File.separator+"dome.txt");
		//第一步给路径
		try {
			FileOutputStream str=new FileOutputStream(f);
			//第二步给出输出流
			try {
				byte[] b=a.getBytes();
				
				for(int i=0;i<b.length;i++) {
					str.write(b[i]);
				}
//				str.write(a.getBytes());
//				str.write(b, 2, 5);
			//第三步读
				str.close();
			//第四步关闭
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		

	}

}
  • 2.既然程序可以利用Output Stream类向文件中写入内容,则也可以通过InputStream类从文件中把内容读取进来。定义如下:
Public abstract class InputStream
Extends Object
Implements Closeable
package javabook;

import java.io.*;

public class Javaiotwo {

	public static void main(String[] args) {
		//第一步给出路径
		File f=new File("d:"+File.separator+"javaxx"+File.separator +"dome.txt");
		//第二步给出输出流
		try {
			FileInputStream str=new FileInputStream(f);
			//第三步读
			try {
				byte[] b=new byte[str.available()];
				str.read(b);
				System.out.println(new String(b));
				//第四步关闭
				str.close();
				
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

	}

}

二、字符流

字符流和字节流基本上差不多,他们之间的最主要的区别就是,字节流顾名思义要把字符等转化为字节然后读取,而字符流就是直接使用字符,在日常的操作中,用到的比较多的是字节流,字符流用的比较少,这是因为字符只在内存里面才存在,其他地方比如硬盘就是要字节。同时值得注意的是字符流在操作的时候本身是要用到缓冲区的,就是文件内容写入文件的时候,不是向字节流一样直接写入文件,而是全部写入缓冲区,等到刷新或者等到文件关闭,内存区满了的时候才会写入文件中,不然就会一直在缓冲区等待。

  • 1)字符输出流Writer本身就是一个字符流的输出类,定义如下:
Public abstractclassWriter
Extends Object
Implements Appendable,Closeable,Flushable
package javabook;

import java.io.*;
public class JavaIO {

	public static void main(String[] args) {
		String a="holle java 学习java";
		File f=new File("d:"+File.separator+"javaxx"+File.separator +"dome.txt");
		try {
			FileWriter str=new FileWriter(f);
			str.write(a);
			str.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}
  • 2)字符输入流Reader类使用字符的方式从文件之中取出数据,定义:
Public abstract class Reader
Extends Object
Implements Readable,Closeable

三、管道流和打印流

管道流的主要作用是可以进行两个线程的通信,分为管道输出流(Piped Output Stream)、管道输入流(Piped Input Stream)如果想进行管道输出,则必须把输出流连在输入流上。

在发送线程中定义了管道输出流,在接收的线程类中定义了管道的输入流,在操作是只要使用Piped Output Stream类提供的connection()方法,就可以将两个线程管道连接到一起,线程启动后会主动的进行输入、输出操作。
打印流可以提供非常方便的打印功能,可以打印任何的数据类型,如小数、整数、字符串等。把一个输出流的实例传递到打印流之后,可以更加方便的输出内容,也就是说,是打印流把输出流重新装饰了一遍,就向送人礼物一样,需要把礼物包装一下显得更加好看,所以这样的设计被称作装饰设计模式。

四、System类对IO的支持

System.out是PrintStream的对象,在PrintS stream中定义了一系列的print()和println()方法,所以前面使用的“System.out.print()”或“System.out.println()”语句调用的实际上就是PrintStream类的方法。既然此对象不是的是向显示器上输出,而PrintStream又是Output Stream的子类。所以直接利用此对象向屏幕上输出信息。

System.err表示的是错误信息的输出,如果程序出现错误,则可以直接使用System.err进行打印。实际上与System.out差不多,只不过是err输出的信息一般是程序员自己看到的,别人是看不到的,输出的颜色则是红色,out则是输出给用户看的。

原文地址:https://www.cnblogs.com/lyl68/p/11778104.html