第十周作业

实验代码

package ddd;
import java.io.File;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.OutputStream;
import java.io.InputStream;
public class hhh {
    private static boolean ture;

	public static void main(String[] args) throws Exception {
    	String d="d:"+File.separator+"test.txt";
    	 OutputStream out=null;    
         try {
			out= new FileOutputStream(d,ture);
			String str="Hello World";
			byte b[]=str.getBytes();
			for(int i=0;i<b.length;i=i+2) {
				if(b[i]<='z'&&b[i]>='a') {
					b[i]=(byte)(b[i]-32);
				}
			}
			out.write(b);
			out.close();
			System.out.print(new String(b));
			 
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			e.printStackTrace();
		}         
    }
}

实验结果截图

实验代码

package ddd;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class sff {
      public static void main(String args[]) throws Exception {
    	  String f="d:"+File.separator+"test.txt";
			InputStream input =null;
			input=new FileInputStream(f);
			byte a[]=new byte[(int)f.length()];
			for(int i=0;i<a.length;i=i+2) {
				if(a[i]<='z'&&a[i]>='a') {
					a[i]=(byte)(a[i]-32);
				}
			}
			input.read(a);
			input.close();  
			System.out.print(new String(a));
          
      }
}

实验结果截图

学习总结

字节流与字符流在Java中io操作步骤如下:(以文件为例)
1通过File类打开一个文件 。
2通过字节流或字符流的子类指定输出位置。
3经行读写操作。
4关闭输入输出。
字节流:
字节流以操作byte类型数据为主,主要操作类为OutputStream类和InputSream类。
字节输出流OutputStream是整个IO包中字节输出流最大父类,其操作方法见书P380 表12-3。
字节输入流InputSream为抽象类,需依靠子类,其主要方法见书p384 表12-4。
字符流:
字符输出流Writer本身也是个抽象类,常用方法见书p388 表12-5。
字符输入流Reader是用字符的方法从文件中取出数据,它也是个抽象类,常用方法见书p390 表12-6。
字节流和字符流除了操作代码不同外,字符流还比字节流多出缓存区。
字节流在操作的时候本身是不会用到缓冲区的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。
字节流在操作文件时,即使不关闭资源,文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容。
字符流的缓冲区,可以使用flush方法强制进行刷新缓冲区,这时可以在不close的情况下输出内容。
字节-字符转换流
OutputStreamWriter和InputStreamReader
在整个IO包中除了这两个流之外,还存在字节流-字符流的转换类。
OutputStreamWriter:是Writer的子类,将输出的字符流转换为字节流。即:将一个字节流的输出对象变为字节流的输出对象  
InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。
在构造方法中,如果将append的值设置为true,则表示在文件的末尾追加内容。
FileInputStream 常用的构造方法主要有如下两种重载形式。
FileInputStream:通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream:通过打开一个到实际文件的链接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
要格式化输出: PrintStream, PrintWriter
flush():刷新缓冲区
close(): 关闭流对象,先刷新,再关闭
转换流:
OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节,将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去。
内存流
字节数组:
ByteArrayInputStream
ByteArrayOutputStream
字符数组
CharArrayReader
CharArrayWriter
字符串
StringReader
StringWriter
管道流
PipedOutputStream和PipedInputStream分别是管道输出流和管道输入流。这个两个流必须同时使用。
打印流
System类当中的方法: 
System.in:标准的输入流 默认是键盘录入
System.out:标准的输出流 默认是输出到控制台。 
System.setIn(InputStream in); 改变来源。 
System.setOut(PrintStream ps);  
PrintStrea PrintStream(File file) 
创建具有指定文件且不带自动行刷新的新打印流。 
PrintStream(File file, String csn)  
PrintStream(OutputStream out)  
PrintStream(OutputStream out, boolean autoFlush) 自动刷新。 
 PrintStream(String fileName)
posted @ 2019-11-02 11:30  hshsr  阅读(91)  评论(0编辑  收藏  举报