zoukankan      html  css  js  c++  java
  • 第十周课程总结

    第十周课程总结

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

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

    一、字节流主要是操作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则是输出给用户看的。

  • 相关阅读:
    IDEA——使用JavaScript Debugger调试代码
    CSS——通过CSS实现展示更多选项和收起
    Antd——表单使用自定义正则进行校验
    GitHub——如何切换默认分支
    Taro——安装和使用
    webpack——You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file.
    SSH——ssh: rejected: administratively prohibited (open failed)
    VUE——三元表达式动态渲染样式
    Windows——80端口被系统占用
    NPM——BASIC realm="Sonatype Nexus
  • 原文地址:https://www.cnblogs.com/lyl68/p/11778104.html
Copyright © 2011-2022 走看看