黑马程序员------IO(一)

1.1 IO(Input  Output)流概述:

IO流用来处理设备之间的数据传输

Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流与字符流。
流按流向分为:输入流,输出流。

将外设中的数据读取到内存中:输入。

将内存的数写入到外设中:输出。

1.2 IO中的字符流和字节流:

字节流两个基类:
InputStream OutputStream

字符流两个基类:
Reader Writer

P.S.
由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。

需求:在硬盘上,创建一个文件并写入一些文字数据(示例1)。

 1 示例1:
 2 import java.io.*;
 3 class  FileWriterDemo
 4 {
 5     public static void main(String[] args) throws IOException
 6     {
 7         //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。
 8         //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
 9         //其实该步就是在明确数据要存放的目的地。
10         FileWriter fw = new FileWriter("demo.txt");
11
12         //调用write方法,将字符串写入到流中。
13         fw.write("abcde");
14
15         //刷新流对象中的缓冲中的数据。
16         //将数据刷到目的地中。
17         //fw.flush();
18
19
20         //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
21         //将数据刷到目的地中。
22         //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
23         fw.close();
24     }
25 }

PS:1. close方法只能用一次。

 2. 流关闭以后不能,不能再调用write方法,否则会报如下异常错误:

   3.如果构造函数中加入true,可以实现对文件进行续写(示例2)

 1 示例2:
 2 import java.io.*;
 3 class  FileWriterDemo3
 4 {
 5     public static void main(String[] args) throws IOException
 6     {
 7
 8         //传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。
 9         FileWriter fw = new FileWriter("demo.txt",true);根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。为 true,则将数据写入文件末尾处,而不是写入文件开始处
10
11         fw.write("nihao\r\nxiexie");//\r\n表示换行
12
13         fw.close();
14     }
15 }

1.3 IO异常的处理方式(示例3):为防止代码异常导致流无法关闭,因此在finally中对流进行关闭

 1 示例3
 2 import java.io.*;
 3
 4 class  FileWriterDemo2
 5 {
 6     public static void main(String[] args)
 7     {
 8         FileWriter fw = null;//在外面建立引用
 9         try
10         {
11             fw = new FileWriter("demo.txt");//在里面进行初始化
12             fw.write("abcdefg");
13
14         }
15         catch (IOException e)
16         {
17             System.out.println("catch:"+e.toString());
18         }
19         finally
20         {
21             try
22             {
23                 if(fw!=null)
24                     fw.close();
25             }
26             catch (IOException e)
27             {
28                 System.out.println(e.toString());
29             }
30
31         }
32
33     }
34 }

需求:读取一个文文件,将读取到的字符打印到控制台。(使用FileReader)
第一种读取方式:使用read()方法读取文本文件数据(示例4)

 1 示例4:
 2
 3 class  FileReaderDemo
 4 {
 5     public static void main(String[] args) throws IOException
 6     {
 7         //创建一个文件读取流对象,和指定名称的文件相关联。
 8         //要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
 9         FileReader fr = new FileReader("demo.txt");
10
11         //调用读取流对象的read方法。
12         //read():一次读一个字符。而且会自动往下读。
13
14         int ch = 0;
15
16         while((ch=fr.read())!=-1)
17         {
18             System.out.println((char)ch);
19         }
20
21
22         /*
23         while(true)
24         {
25             int ch = fr.read();
26             if(ch==-1)
27                 break;
28             System.out.println("ch="+(char)ch);
29         }
30         */
31
32
33
34         fr.close();
35
36
37     }
38 }

第二种读取方式:使用read(char[])方法读取文本文件数据(示例5)。

 1 示例5
 2
 3
 4 import java.io.*;
 5
 6 class FileReaderDemo2
 7 {
 8     public static void main(String[] args) throws IOException
 9     {
10         FileReader fr = new FileReader("demo.txt");
11
12
13         //定义一个字符数组。用于存储读到字符。
14         //该read(char[])返回的是读到字符个数。
15         char[] buf = new char[1024];
16
17         int num = 0;
18         while((num=fr.read(buf))!=-1)
19         {
20             System.out.println(new String(buf,0,num));
21         }
22
23
24         fr.close();
25     }
26 }
时间: 2024-10-24 04:52:54

黑马程序员------IO(一)的相关文章

黑马程序员------IO(五)

黑马程序员------IO(五) 1.1  操作对象(示例1)ObjectInputStream与ObjectOutputStream 被操作的对象需要实现Serializable. Serializable:用于给被序列化的类加入ID号,用于判断类和对象是否是同一个版本 类通过实现java.io.Serializable接口以启用序列化功能,Serializable只是一个标记接口. 1 示例1: 2 import java.io.*; 3 4 class ObjectStreamDemo 5

黑马程序员——IO篇

------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流 1.IO流用来处理设备之间的数据传输 2.Java对数据的操作是通过流的方式 3.Java用于操作流的对象都在IO包中 4.流按操作数据分为两种:字节流与字符流 . 字符流的数据字节流其实都能处理,因为无论什么在计算机上最后都是以字节存在的,但是其中有一部分数据它是以文本形式存在的,所以为了方便有了字符流,字符流里融合了编码表,而只有文字用到了编码表,所以字符流用来处理文本

黑马程序员 IO流 文件的分割与合并

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------package cn.itcast.IO; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

黑马程序员——IO流总结

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 什么是IO流? IO流是用来处理设备之间的数据传输 有哪些流? 流按操作数据的种类分为:字符流和字节流 流按流的方向分:输入流和输出流 字节流的基类:InputStream和OutputStream 字符流的基类:Writer和Reader 常用写字符流:FileWriter,BufferedWriter,OutputStreamWriter,PrinterWriter 常用读字符流  : F

黑马程序员-IO流其他流与File类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1:其他的流 1: DataOutputStream ;多了一些操作基本数据类型的功能 DataInputStream:读取文件. 用DataOutputStream流写进去的数据,就用DataInputStream流来读取. 1 imp

黑马程序员——IO包中的其他类

IO包中的其他类: 1.打印流:提供了打印方法,可以将各种数据类型的数据原样打印     字节打印流PrintStream       构造函数可以接受的参数类型:         (1)File对象  File          (2)字符串路径 String          (3)字节输出流  OutputStream 字符打印流PrintWriter        构造函数可以接受的参数类型:           (1)File对象  File          (2)字符串路径 Str

黑马程序员——IO流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- IO流 IO流概述 IO流用来处理设备之间的数据传输.Java对数据的操作是通过流的方式.Java用于操作流的对象都在IO包中. 流按照流向分为两种:输入流和输出流. 输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入.将内存的数写入到外设中:输出. 流按照操作数据分为两种:字节流和字符流. 字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字.再对这个文字

黑马程序员——IO——读取一个文件中的文字输出到控制台上

读取一个文件中的文字输出到控制台上 import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; //读取一个文件中的文字 ,输出到控制台上 //读取的是字符文字,因此可以使用字符流来操作 public class FileReaderDemos { public static void main(String[] args) { // TODO Auto-generate

黑马程序员-IO流

IO概述 IO流用来处理设备之间的数据传输,java 对数据操作的是通过流的方式 java用于操作流的对象都在IO包中. 流按操作数据分为两种:字节流与字符流 流按流向分为:输入流和输出流 字符流对象中融合了编码表.只有文字涉及到编码 字节流的抽象基类: inputStream,OutputStream 字符流的抽象基类: Reader Writer Writer 方法: write(String str)    写入字符串. write(int c)        写入单个字符. write(

黑马程序员-io读取键盘录入之转换流

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- 自学视频io第二部分最后 这一讲重点部分,明白io流中这么多体系,怎么快速判断用哪种流... 1 1.1:明白源:InputStream Reader 1.2:明确目的:OutputStream Writer 2 是否是文本文件 是: 用Reader Writer 不是:用 InputStream OotputStream 3 是否要提高读写效率 是:BufferedReader br=new Buffered