IO(Input Output)流
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式,流是一种操作数据的手段,技术
流按操作数据分为两种:字节流与字符流。
流按流向分为:输入流,输出流。
字符流由来就是:早期的字节流+编码表,为了更便于操作文字数据。
记住:只要是操作字符数据,应该优先使用字符流。
操作其他数据,只能使用字节流
IO流常用基类
字节流的抽象基类:
InputStream ,OutputStream。
字符流的抽象基类:
Reader , Writer。
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。前缀名都是这个子类的功能。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
package cn.itcast.p4.io.file;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
/*
* 需求:将内存中的字符串数据写入到硬盘上。
* 1,内存数据到硬盘,应该是输出,也就是写。需要使用输出流。
* 2,要操作的是文本数据。应该字符流。
* 3,综上所述,应该使用字符输出流。Writer。
* 4,因为是将数据写到硬盘上,而硬盘存储数据的方式就是文件。
* 5,应该找一个可以操作文件的字符输出流对象。找到了FileWriter。
*/
//1,创建FileWriter对象。
/*
* 创建对象,运行时就会创建指定的文件,因为写入数据必须先有数据存储的目的地。
* 如果要创建的文件已经存在,则会覆盖。
*/
FileWriter fw = new FileWriter("demo.txt");
//2,写入一个字符串。写入到了缓冲区中。
fw.write("hehe");
//3,使用flush方法。将缓冲中的数据写入到目的地中。
fw.flush();
//4,关闭 close
fw.close();
}
}
IO-字符输出流_flush&close
* close()和flush()的区别?
* 1,调用flush,可以将数据刷到目的地中,流依然存在,可以继续使用。
* 调用close,可以将数据刷到目的地中,流已被关闭。不能继续使用。最后使用。
* 2,close不仅刷新缓冲区,还关闭底层资源。
IO-字符输出流_IO异常的处理
package cn.itcast.p5.ioexception;
import java.io.FileWriter;
import java.io.IOException;
public class IOExceptionDemo {
public static void main(String[] args) {
FileWriter fw = null;
try {
fw = new FileWriter("demo1.txt");
fw.write("abcde");
fw.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fw != null)
try {
fw.close();
} catch (IOException e) {
throw new RuntimeException("关闭失败");
}
}
}
}
IO-字符输出流_续写&换行
package cn.itcast.p4.io.file;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo2 {
private static final String LINE_SEPARATOR =
System.getProperty("line.separator");
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/*
* 如果在构造时,传入第二个参数为true,将在原有文件末尾处进行续写。
*/
FileWriter fw = new FileWriter("demo.txt",true);
fw.write(LINE_SEPARATOR+"hiahia");
fw.close();
}
}
转载于:https://blog.51cto.com/pengya123/1790039