I/O流--1
来源:互联网 发布:3b代码编程及图案 编辑:程序博客网 时间:2024/05/22 06:25
IO流:
输入流和输出流相对于内存设备而言.
将外设中的数据读取到内存中:输入
将内存的数写入到外设中:输出。
字符流的由来:
其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。
在对这个文字进行操作。简单说:字节流+编码表
--------------------------
字节流的两个顶层父类:
1,InputStream 2,OutputStream.
字符流的两个顶层父类:
1,Reader 2,Writer
这些体系的子类都以父类名作为后缀。
而且子类名的前缀就是该对象的功能。
就从熟悉的文字开始字符流,
//需求:将一些文字存储到硬盘一个文件中。
记住;如果要操作文字数据,建议优先考虑字符流。
而且要将数据从内存写到硬盘上,要使用字符流中的输出流。Writer
硬盘的数据基本体现是文件。 希望找到一个可以操作文件的Writer.
找到了FileWriter
----------------------------------------------------------------
filewriter:
import java.io.FileWriter;
import java.io.IOException;
//需求:将一些文字存储到硬盘一个文件中。
public class FileWriterDemo {
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {//写入文件,但是文件得指定路径,但是这个路径在自己的机器上没问题,在别的机器上可能没有这个路径
//这就是输入输出失败,输入输出出现的问题这就是io异常。暂时抛一下异常。
//创建一个可以往文件中写入字符数据的字符输出流对象。
/*
* 既然是往一个文件中写入文字数据,那么在创建对象时,就必须明确该文件(用于存储数据的目的地)。
*
* 如果文件不存在,则会自动创建。
* 如果文件存在,则会被覆盖。
*
* 如果构造函数中加入true,可以实现对文件进行续写!//调用了上图中的第二个构造函数。加一个true就可以续写。
*/
FileWriter fw = new FileWriter("demo.txt",true);
/*
* 调用Writer对象中的write(string)方法,写入数据。
*
* 其实数据写入到临时存储缓冲区中。
*
*/
fw.write("abcde"+LINE_SEPARATOR+"hahaha");//细节:
// fw.write("xixi");
/*
* 进行刷新,将数据直接写到目的地中。
*/
// fw.flush();
/*
* 关闭流,关闭资源。在关闭前会先调用flush刷新缓冲中的数据到目的地。
*/
fw.close();
// fw.write("haha");// java.io.IOException: Stream closed 因为流没了就没法写了,所以报了异常。
}
}
io异常处理:一般进行io处理,肯定发生异常。如何处理呢?
对象没创建出来,fw就不能被创建,是有意fw.close()就报了空指针异常。
io异常的简单处理,变量定义在外边FileWriter fw = null;(省得在区域内有效,下面的变量识别不到)。
new在里边。
fw.close一定要判断非空指针。
import java.io.FileWriter;
import java.io.IOException;
public class IOExceptionDemo {
private static final String LINE_SEPARATOR = System
.getProperty("line.separator");
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) {
FileWriter fw = null;
try {
fw = new FileWriter("k:\\demo.txt");
fw.write("abcde" + LINE_SEPARATOR + "hahaha");
} catch (IOException e) {
System.out.println(e.toString());
} finally {
if (fw != null)
try {
fw.close();
} catch (IOException e) {
// code....
throw new RuntimeException("关闭失败");
}
}
}
}
//需求:读取一个文本文件。将读取到的字符打印到控制台.
同上,找到了FileReader
filereader:
read方法:
返回一个字符范围在这个范围的int类型。
read过程图:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
//需求:读取一个文本文件。将读取到的字符打印到控制台.
public class FileReaderDemo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//1,创建读取字符数据的流对象。
/*
* 在创建读取流对象时,必须要明确被读取的文件。一定要确定该文件是存在的。
*
* 用一个读取流关联一个已存在文件。
*/
FileReader fr = new FileReader("demo.txt");
int ch = 0;
while((ch=fr.read())!=-1){
System.out.println((char)ch);
}
/*
//用Reader中的read方法读取字符。
int ch = fr.read();
System.out.println((char)ch);
int ch1 = fr.read();
System.out.println(ch1);
int ch2 = fr.read();
System.out.println(ch2);
*/
fr.close();
}
}
read读数组方法:
返回的是读到的字符数。
read数组方法过程图:
import java.io.FileReader;
import java.io.IOException;
//需求:读取一个文本文件。将读取到的字符打印到控制台.
public class FileReaderDemo2 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
/*
* 使用read(char[])读取文本文件数据。
*
* 先创建字符数组。
*/
char[] buf = new char[1024];// 长度最好是1024的整数倍。
int len = 0;
while((len=fr.read(buf))!=-1){
System.out.println(new String(buf,0,len));
}
/*
int num = fr.read(buf);//将读取到的字符存储到数组中。
System.out.println(num+":"+new String(buf,0,num));
int num1 = fr.read(buf);//将读取到的字符存储到数组中。
System.out.println(num1+":"+new String(buf,0,num1));
int num2 = fr.read(buf);//将读取到的字符存储到数组中。
System.out.println(num2+":"+new String(buf));
*/
fr.close();
}
}
- I/O流--1
- I/O流(1 )
- I/O流基础知识1
- 黑马程序员-I/O流(1)
- 笔记1: 输入输出I/O流架构
- java I/O流(1)编码
- 【java基础】12.I/O:流1
- I/O 流
- java I/O流
- c++I/O流
- I/O流
- java I/O流
- java I/O流
- 文件I/O流
- Java I/O流
- I/O 流分类
- I/O流
- I/O流操作
- DOM事件处理程序
- MainActivity.this是什么意思以及为什么这样表达
- centos7下jdk神奇消失?
- eclipse for C++ 导入文件夹(Mac)
- Hadoop 2.x环境搭建
- I/O流--1
- java面试基础知识(二)
- kimball的维度的缓慢变化总结
- Solr检索配置
- FastDFS 实现分布式文件系统(图片的上传)
- 什么情况下使用指针的引用(指针)
- J2EE搭建之七 创建一个Dynamic Web Project
- HDU 6168 Numbers 思维
- phpstorm 实现同步代码到远程虚拟机