Java IO-2 IO流

1.字节流介绍

InputStream和OutputStream是字节流的顶级父类, 所有的字节输入流继承自InputStream, 所有的字节输出流继承自OutputStream

2.FileOutputStream

 1 package deom03;
 2
 3 import java.io.FileOutputStream;
 4 import java.io.IOException;
 5
 6 public class FileOutputStreamDemo {
 7     public static void main(String[] args) throws IOException {
 8         FileOutputStream out = new FileOutputStream("c:\\out.txt");
 9         //void write(int b) 向输出流写入一个字节 d
10         out.write(100);
11         out.close();
12
13         byte[] bytes = {65,66,67,68};
14         FileOutputStream out1 = new FileOutputStream("c:\\out1.txt");
15         //void write(byte[] b) 写入字节数组 ABCD
16         out1.write(bytes);
17         out1.close();
18
19         FileOutputStream out2 = new FileOutputStream("c:\\out2.txt");
20         //向文件中写入一个字符串
21         out2.write("hello".getBytes());
22         out2.close();
23
24         //追加写入
25         FileOutputStream out3 = new FileOutputStream("c:\\out3.txt", true);
26         //向文件中写入一个字符串
27         out3.write("hello".getBytes());
28         out3.write("world".getBytes());
29         out3.close();
30
31         //追加 换行写入
32         FileOutputStream out4 = new FileOutputStream("c:\\out4.txt", true);
33         //向文件中写入一个字符串
34         out4.write("hello".getBytes());
35         out4.write("\r\n".getBytes());
36         out4.write("world".getBytes());
37         out4.close();
38
39         //异常处理
40         MyException();
41     }
42
43     //异常处理
44     public static void MyException() {
45         FileOutputStream out5 = null;
46         try {
47             out5 = new FileOutputStream("c:\\out5.txt");
48             out5.write(100);
49         } catch (IOException e) {
50             System.out.println(e.getMessage());
51             throw new RuntimeException("文件写入失败");
52         } finally {
53             try {
54                 if (out5 != null) {
55                     out5.close();
56                 }
57             } catch (IOException e2) {
58                 System.out.println(e2.getMessage());
59                 throw new RuntimeException("关闭资源失败");
60             }
61
62         }
63     }
64 }

3.FileInputStream

 1 package deom03;
 2
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5
 6 //input1.txt 内容 abc
 7 public class FileInputStreamDemo {
 8     public static void main(String[] args) throws IOException {
 9         FileInputStream in = new FileInputStream("c:\\input1.txt");
10
11         //int read() 读取一个字节转换为整数并返回这一整数
12         int i = 0;
13         while ((i = in.read()) != -1) {
14             System.out.println(i);
15         }
16         in.close();
17
18         //int read(byte[] b) 读取若干字节并保存到字节数组中
19         FileInputStream in1 = new FileInputStream("c:\\input1.txt");
20         byte[] b = new byte[3];
21         int len = in1.read(b);
22         System.out.println(new String(b));    //abc
23         System.out.println(len);            //3
24         in1.close();
25     }
26 }

4.文件复制

第一种方式

 1 package deom03;
 2
 3 import java.io.FileInputStream;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6
 7 //文件复制-效率低
 8 public class Copy {
 9     public static void main(String[] args) {
10         FileInputStream in = null;
11         FileOutputStream out = null;
12         try {
13             in = new FileInputStream("c:\\xampp安装包.zip");
14             out = new FileOutputStream("c:\\11.zip");
15
16             int len = 0;
17             while ((len = in.read()) != -1) {
18                 out.write(len);
19             }
20         } catch (IOException e) {
21             System.out.println(e);
22             System.out.println("文件复制失败");
23         } finally {
24             try {
25                 if (out != null) {
26                     out.close();
27                 }
28             } catch (IOException e1) {
29                 throw new RuntimeException("释放资源失败");
30             } finally {
31                 try {
32                     if (in != null) {
33                         in.close();
34                     }
35                 } catch (IOException e2) {
36                     throw new RuntimeException("释放资源失败");
37                 }
38             }
39         }
40     }
41 }

第二种方式

 1 package deom03;
 2
 3 import java.io.FileInputStream;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6
 7 //文件复制-效率高
 8 public class CopyFast {
 9     public static void main(String[] args) {
10         FileInputStream in = null;
11         FileOutputStream out = null;
12
13         try {
14             in = new FileInputStream("c:\\xampp安装包.zip");
15             out = new FileOutputStream("c:\\11.zip");
16             byte[] bytes = new byte[1024];
17             int len = 0;
18             while ((len = in.read(bytes)) != -1) {
19                 out.write(bytes, 0, len);
20             }
21         } catch (IOException e) {
22             System.out.println(e);
23             System.out.println("文件复制失败");
24         } finally {
25             try {
26                 if (out != null) {
27                     out.close();
28                 }
29             } catch (IOException e1) {
30                 throw new RuntimeException("释放资源失败");
31             } finally {
32                 try {
33                     if (in != null) {
34                         in.close();
35                     }
36                 } catch (IOException e2) {
37                     throw new RuntimeException("释放资源失败");
38                 }
39             }
40         }
41     }
42 }

5.字符流介绍

Reader和Writer是字符流的顶级父类, 所有的字符输入流继承自Reader, 所有的字符输出流继承自Writer

6.FileReader

 1 package deom03;
 2
 3 import java.io.FileReader;
 4 import java.io.IOException;
 5
 6 public class ReaderDemo {
 7     public static void main(String[] args) throws IOException {
 8         FileReader fr = new FileReader("c:\\1.txt");
 9         int len = 0;
10         while ((len = fr.read()) != -1) {
11             System.out.print((char)len);
12         }
13         fr.close();
14
15         FileReader fr1 = new FileReader("c:\\1.txt");
16         char[] ch = new char[1024];
17         int len1 = 0;
18         while ((len1 = fr1.read(ch)) != -1) {
19             System.out.println(new String(ch, 0, len1));
20         }
21     }
22 }

7.FileWriter

 1 package deom03;
 2
 3 import java.io.FileWriter;
 4 import java.io.IOException;
 5
 6 public class WriterDemo {
 7     public static void main(String[] args) throws IOException {
 8         FileWriter fw = new FileWriter("c:\\1.txt");
 9
10         //写一个字符
11         fw.write(100);
12         fw.flush();
13
14         //写一个字符数组
15         char[] c = {‘a‘,‘b‘,‘c‘};
16         fw.write(c);
17         fw.flush();
18
19         //写一个字符数组一部分
20         fw.write(c,0,2);
21         fw.flush();
22
23         //写一个字符串
24         fw.write("你好");
25         fw.flush();
26
27         fw.close();
28     }
29 }
时间: 2024-07-31 07:01:10

Java IO-2 IO流的相关文章

Java中的IO流

Java中的IO流是实现输入/输出的基础. 按照流的方向不同:分为输入流和输出流. 按照处理数据单位的不同:分为字节流(8位)和字符流(16位). 按照功能不同:分为节点流和处理流 所有面向字节的流类都继承于InputStream类(输入流) 或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能. InputStream.OutputStream都是抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象类应用程序写出数据

JAVA 中的IO流

Java中的IO流是用来处理设备与设备之前的数据传输,在java中以流的形式传输.流分为两类:字节流和字符流. 字节流:InputStream,OutPutSteam.(计算机内的数据都是以字节存储的,字节流可以操作任意数据) 字符流:Reader,Writer.(字符流只能操作字符,但是在实际应用中字符流比较方便) 从操作来看又可以分为:输入流和输出流. 在进行IO流操作的时候分为以下几步:1.导入IO流的包,2.进行IO流的异常处理,3.关闭IO流释放资源. 字节流 ————————————

三、JAVA中的IO流,输出流

JAVA中java.io.*;提供数据的流式输入与输出的相关类,IO流是对于输入与输出的抽象,JAVA把这些不同来源和目标的数据都统一抽象为数据流.将输入与输出的数据统一为流的好处是程序不必关心要读取得是文件,还是网络中的数据,而是统一当作IO流来处理. IO流又分为字符流与字节流,主要区别 字节流 按字节处理(一次处理一个字节) 使用类OutputStream 字符流 按字符处理(一次处理一个字符即两个字节) 使用类Writer 其实字节流与字符流处理十分相似(即每次处理的单位不同),好多书上

Java IO:面向流、同步、堵塞式IO(BIO)

转载请注明出处:jiq?钦's technical Blog 备注:阅读此文之前,建议先看我这篇博文了解堵塞式IO和非堵塞式IO的基本概念. JAVA BIO是面向流(字节流.字符流)的,即从流中一次读取一个或者多个字节,读取和写入时都须要同步堵塞直至完毕. 一.流(Stream) 1.字节流 输入(InputStream) 介质流 FileInputStream 从文件里读取信息 PipedInputStream 产生用于写入相关PipedOutputStream的数据,实现"管道化"

Java基础之IO流

1.IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据. (2)java中对数据的操作都是通过流的方式. (3)java用于操作流的类都在io包中. (4)按照流操作的数据的类型不同:分为字节流和字符流.字符流是为了方便中文的操作而来的. (5)按照流的流向不同分为:输入流,输出流 2.IO流常用基类: (1)字节流 输出字节流:OutputStream:字节写入流抽象类 |--->FileOutputStream: 字节写入流 |--->BufferedOutputStream:

Java IO之处理流(缓冲流、转换流)

一.处理流: 增强功能,提供性能,在节点流之上. 二.节点流与处理流的关系 节点流(字节流.字符流)处于IO操作的第一线,所有操作必须通过它们进行: 处理流可以对其他流进行处理(提高效率或操作灵活性). 三.缓冲流 1.字节缓冲流 BufferedInputStream BufferedOutputStream package IOBuffer; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; im

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象

Java中的IO流系统详解

Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换.而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换.字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高

java基础篇IO流的规律

前两篇降了IO流中的字节流和字符流复制的例子,今天来总结一下IO流的规律 掌握好IO流的规律,再开发中会很好用 下面来总结一下: 1,明确源和目的 源:输入流 InputStream 和Reader 目的:输出流 OutputStream 和Writer 2,操作的数据是否是纯文本. 是:使用字符流 不是:使用字节流 3,当体系明确后,在明确要使用哪个具体的对象,通过设备来进行区分 源设备: 内存,硬盘,键盘 目的设备: 内存,硬盘,控制台 这里的源就是你想进行的操作,比如说你想从c盘复制一个文

JAVA之IO技术-字符流对象Writer的子类对象FileWriter的使用

  package ioTest.io1; import java.io.File; import java.io.FileWriter; /* * IO技术,按照操作数据的方式分类如下: * 字节流和字符流 * 字节流的两个基类: * InputStream,OutputStream * 字节流的两个基类: * Reader,Writer * 思考一个问题:为什么有了字节流还要出现字符流? * * 先学习字符流的特点. * * 既然IO是操作数据的,那么数据最常见的体现形式 文件 * 需求: