Java关于IO流的详解
发布时间:2021-11-18 16:59:31 所属栏目:教程 来源:互联网
导读:JDK提供的流继承了四大类:InputStream(字节输入流)、OutputStream(字节输出流)、Reader(字符输入流)、Writer(字符输出流)。 字符流和字节流的主要区别: 1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应
JDK提供的流继承了四大类:InputStream(字节输入流)、OutputStream(字节输出流)、Reader(字符输入流)、Writer(字符输出流)。 字符流和字节流的主要区别: 1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。 2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。 只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。 详解如下: 一、字节流讲解 1.用流对文件进行处理 package com.chen.test; import Java.io.*; /** * * @author 陈家小帅 * */ public class TestIO { public static void main(String[] args) { File file = new File("E:/java.txt"); if (!file.exists()) { //先判断该目录文件是否存在 try { //file.mkdirs(); 创建该目录下指定的文件夹 file.createNewFile(); // 当文件不存在时,创建此文件夹 } catch (Exception e) { e.printStackTrace(); } } //file.delete(); //删除指定的文件 System.out.println("文件名:"+file.getName()); } } 2. InputStream 和 OutputStream 是两个 abstact 类,对于字节为导向的 stream 都扩展这两个基类; inputStream中的关键方法: read():方法是读取一个byte字节,但是返回的是int。 read(byte[]):一次性读取内容到缓冲字节数组 read(byte[],int,int):从数据流中的哪个位置offset开始读长度为len的内容到缓冲字节数组 OutputStream中的关键方法 write(int):写入一个字节到stream中 write(byte[])写入一个byte数组到stream中 write(byte[],int,int):把byte数组中从开始处写入长度为len的数据 flush():这个方法是用来刷新stream中的数据,让缓冲区中的数据强制的输出 3.FileInputStream和FileOutputStream FileInputStream : 从文件系统中的某个文件中获得输入字节. Java关于IO流的介绍 FileOutputStream : 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流. 下面是一个例子: package com.chen.test; import java.io.*; /** * * @author 陈家小帅 * */ public class Test4 { public static void main(String[] args) throws Exception { String path1 = "E:/WorkSpace/Mouth/bin/Dest.txt"; String path2 = "E:/WorkSpace/Mouth/bin/D.txt"; ReadByFIS(path1, path2); } /** * 使用FileInputStream 将一个文件的内容写入到另一个文件中,并在控制台输出 * * @param path1 * @param path2 * @throws Exception */ public static void ReadByFIS(String path1, String path2) throws Exception { InputStream in = new FileInputStream(path1); //创建文件输入流 OutputStream out = new FileOutputStream(path2); //创建文件输出流 byte[] buffer = new byte[1024]; //定义字节数组 int len = 0; while ((len = in.read(buffer)) > 0) { //将最多buffer.lenth个字节的数据读入byte数组中 String s = new String(buffer, 0, len); //将读入的字节转换成String类型 System.out.println(s); //输出读取到的信息 out.write(buffer, 0, len); //将读取到的信息写入到文件中 } out.close(); //关闭输入输出流 in.close(); } } 输出结果如下: Java关于IO流的介绍 如果想让某个字符串写入到文件中,如下所示: package com.chen.Two; import java.io.*; public class Two { // 编写一个Java程序将111,112,113,114,115 这5个数以写入到Dest.txt文件中 public static void main(String[] args) throws Exception { String str = "111,112,113,114,115"; //定义字符串 FileOutputStream fo = new FileOutputStream("E:/WorkSpace/Mouth/bin/Dest.txt"); //创建文件输出流 int len = 0 ; byte[] buffer = str.getBytes(); //将字符串转换成byte字节 fo.write(buffer); //将字节数组中的数据写出 fo.close(); } } (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |