IO流 按数据流向分为 输入流(读数据)与 输出流(写数据)
按数据类型分为 字节流 与 字符流
以文件输出流为参考,了解输出流的应用(write数据的三种方式) ,输入流则是read数据的三种方式,了解字节流的特性及操作
FileOutputStream 用于将数据写入Fille
以下是FileOutputStream的构造方法与写入
package IO;
import java.io.FileOutputStream;
import java.io.IOException;
public class Ffileoutputstrream {
public static void main(String[] args) throws IOException {
//FileOutputStream(String name) 创建文件输出流,写入以指定的 名称 表示的文件
FileOutputStream f=new FileOutputStream("D:\\FILE\\java.txt");
//FileOutputStream(File file) 创建文件输出流,写入以指定的 File对象 表示的文件
/*File ff=new File("D:\\FILE\\java.txt");
System.out.println(ff.createNewFile());//true
FileOutputStream f=new FileOutputStream("ff");*/
//写入字节数据的三种方式
//1.void write(int b) 将指定字节写入此文件输出流,一次只能写入一个字节数据
//f.write(97);//a
//2.void write(byte[] b) 将b.length字节从指定字节数组写入此文件输出流
//(一次写一个字节数组)
//byte[] getBytes() 根据字符串得到一个字节数组 例:byte[] b="abc".getBytes();
byte[] b= {97,98,99};
//f.write(b);//abc
//3.void write(byte[] b,int off ,int len); 将len字节从指定的字节数组开始,从偏移量off开始写入到此文件输出流
//(一次写一个字节数组的部分数据)
f.write(b,0,2);//ab 从b数组的第0个元素开始,写入两个元素
//void close() 关闭此文件输出流并释放与此流相关的任何系统资源
//f.close();
}
}
字节流实现换行
\r\n(windows); \n(Linux); \r(mac)
字节流实现追加写入
public FileOutputStream(String name,boolean append)
创建文件输出流以指定的名称写入文件,如果第二个参数为true,则字节将写入文件的末尾而不是开头FileOutputStream ff=new FileOutputStream("D:\\FILE\\java.txt",true); ff.write(d);
字节流写数据加入异常处理 finally
被finally控制的语句一定会执行,除非jvm退出,常用于io流中的释放资源try{
可能出现的异常代码;}
catch(异常类名 异常变量名){
异常的处理代码}
finally{
执行所有的清除操作;}
package IO; import java.io.FileOutputStream; import java.io.IOException; public class Yichang { public static void main(String[] args) { FileOutputStream f=null;//需要在try语句之外初始化,否则f.close()会报错 try { f=new FileOutputStream("D://java.txt"); f.write(99); }catch(IOException e) { e.printStackTrace(); }finally { if(f!=null) { try { f.close(); }catch(IOException e){ e.printStackTrace(); } } } } }
文件输入流 FileInputStream 从文件系统中的文件获取输入字节
import java.io.FileInputStream;
import java.io.IOException;
public class Ffileinputstream {
public static void main(String[] args) throws IOException {
//FileInputStream(String name) 通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name来命名
FileInputStream f=new FileInputStream("D:\\FILE\\java.txt");
//三种读取数据的方式
//int read(byte[] b) 从该输出流读取最多b.length个字节的数据到一个字节数组
//int read(byte[] b, int off, int len) 从偏移量off开始将最多len字节的数据读入到一个字节数组。
//int read() 从该输出流获取一个字节的数据,如果达到文件末尾则返回-1
int i=f.read();
while(i!=-1) {
//这两步可优化为 int i;while((i=f.read())!=-1){}
System.out.print((char)i);
}
f.close();
}
}