------- android培训、java培训、期待与您交流! ----------
1、概述
- IO流用来处理设备之间的数据传输。
- java对数据的操作是通过流的方式,用于操作流的对象都在IO包中。
- 流按操作数据分为:字符流、字节流。早期都是字节流,数据的最终形式是字节。
- 文本的频繁使用出现了字符流。编码映射表使字节转为字符,字符流在内部融合了编码表。
- 流按流向分为:输入流、输出流。日常操作电脑是读写。
2、常用基类
- 字节流的抽象基类:InputStream,OutputStream。
- 字符流的抽象基类:Reader,Writer。
- 字节流和字符流的子类结尾都是父类名,如FileInputStream,FileReader。
3、字符流
- Reader,Writer
- 构造方法修饰符是protected,只能子类使用、访问。
- 抽象类,含有部分抽象方法。
- 操作文件的子类FileWriter
- FileWriter所有构造函数,必须有要操作的文件参数,如果存在则覆盖。
- 使用会抛出异常:IOException。
- 示例代码
- 数据的续写
- 再建立FileWriter对象时,传递参数 FileWriter("[路径]+文件名",true),true参数代表不覆盖已有文件并在文件末尾处数据续写,如不存在才创建。
- windows中回车符由 \r\n组成,只有\r或者\n,windows无法识别。显示为小黑方格。
- 数据的读取read(char[]cbuf)(常用)
-
int |
read(char[]cbuf)
将字符读入数组。 |
-
int read(char[]cbuf)
返回读取到的元素个数。
- 这个方法通过移动指针读取元素,每次使用这个方法指针都偏移到下一位元素。读取的最大数取决于数组长度,连续调用这个方法可以读取完所有元素。但是有个缺陷,最后一次读取如果元素只覆盖前面少数元素,后面元素还是原来的。例如abcdefg一次读3个,第一次abc,第二次def,第三次gef。
-
解决上面的问题可以使用String
(char[]value, intoffset, intcount)
方法,通过返回值,读取返回的元素个数。如果返回值是-1,读取结束。
-
/*
练习:读取一个.java文件,并打印在控制台上。
*/
import java.io.*;
class FileReaderTest
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("c:\\Demo.txt");
char[] buf = new char[1024];
int num = 0;
while ((num=fr.read(buf))!=-1)
{
//注意这里不要用println,它会导致打印完缓冲区内容后换行。
System.out.print(new String(buf,0,num));
}
}
}
- 复制粘贴一个文件 ,例子C盘复制到D盘
- 方法一:
/*
练习:复制文件,将C盘文件复制到D盘。
原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。
步骤:
1,在D盘创建一个文件,用于存储C盘文件的数据。
2,定义读取流和C盘文件关联。
3,通过不断的读取完成数据存储。
4,关闭资源。
*/
import java.io.*;
class CopyText
{
public static void main(String[] args) throws IOException
{
copy_2();
}
public static void copy_2()
{
FileWriter fw = null;
FileReader fr = null;
try
{
fw = new FileWriter("D:\\Demo_copy.txt");//目的
fr = new FileReader("c:\\Demo.txt");//源
char[] buf = new char[1024];
int len = 0;
while ((len = fr.read(buf)!=-1))
{
fw.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");//读写失败就抛异常。
}
finally
{
if(fr!=null)//判断流是否为空,防止建流的时候抛了异常。
try
{
fr.close();
}
catch (IOException e)
{
}
if(fw!=null)//判断流是否为空,防止建流的时候抛了异常。
try
{
fw.close();
}
catch (IOException e)
{
}
}
}
public static void cop_1() throws IOException
{
//创建目的.
FileWriter fw = new FileWriter("D:\\Demo_copy.txt");
//创建源与已有文件关联。
FileReader fr = new FileReader("c:\\Demo.txt");
int ch = 0;
while ((ch = fr.read())!=-1)
{
fw.write(ch);//在fr里读一个字符,就写到fw里一个。
}
fw.close();
fr.close();
}
// System.out.println("Hello World!");
}
分享到:
相关推荐
黑马程序员_毕向东_Java基础视频教程第18天-14-IO流(拷贝文本文件图例).zip
Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版)。
黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)
黑马程序员_毕向东_Java基础视频教程第18天-12-IO流(文本文件读取练习).zip
Java-IO流基础例题 & 例题源码 & PPT教学文档(黑马程序员详细版)。
传智播客黑马程序员javaIO流重点总结(必读).doc
黑马程序员_毕向东_Java基础视频教程第18天-13-IO流(拷贝文本文件).zip
黑马程序员_毕向东_Java基础视频教程第18天-11-IO流(文本文件读取方式二).zip
Java基础笔记分为 Java基础篇 和 Java加强篇 ...9. File、方法递归、字符集、IO流(一) 10. IO流(二) 11. 多线程 12. 网络编程 13. 单元测试、反射、注解、动态代理 14. XML、解析、工厂模式和装饰模式
@学习路线根据黑马程序员学习路线改编 Part1: Java基础&Web基础 Java基础 面向对象思想 集合框架 IO流 多线程与并发 异常处理 网络编程 数据库 MySQL Oracle JDBC C3P0 Druid 前端技术 HTML CSS JavaScript jQuery ...
黑马程序员,b站当之无愧的白嫖课程之王 马士兵老师,马老师的课什么都好就是对我来说太贵难度太大,我有时会蹭直播公开课,蹭书。感兴趣可以支持一下(腾讯课堂) 简要介绍 DesignPatterns 设计模式代码库 ...