IO:
package IODemo; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /* IO流概述和分类: IO流概述: *IO 输入、输出 * 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输 * IO流就是用来处理设备间数据传输问题的 常见的应用: 文件复制、文件上传、文件下载 分类: * 按照数据的流向 输入流:读数据 输出流:写数据 * 按照数据类型来分 字节流:字节输入流 字节输出流(读不懂的) 字符流:字符输入流 字符输入流(读得懂的) 一般来说,我们说IO流的分类是按照数据类型来分的 如果数据通过Window自带的记事本软件打开,我们还可以读懂里面的内容,就使用字符流 否则就使用字节流,如果不知道使用哪一种流,则使用字节流 字节流是万能流 */ /* 输入输出流都是抽象类 必须要有它的子类去实现 */ /* 字节流写数据: 字节流抽象基类: *InputStream:这个抽象类是表示字节输入流的所有类的超类 *OutputStream:这个抽象类是表示字节流输出流的所有类的超类 * 子类名特点:子类名称都是以其父类名作为子类名的后缀 &&&&&& FileOutputStream 文件输出流用于将数据写入File FileOutputStream(String name):创建文件输出流以指定的名称写入文件 使用字节输出流写数据的步骤: * 创建字节输出流对象 * 用 write 写入数据 * 用close 释放资源 */ public class IODemo1 { public static void main(String[] args) throws IOException { // 创建字节输出流对象 // FileOutputStream(String name):创建文件输出流以指定的名称写入文件 FileOutputStream fileOutputStream =new FileOutputStream("文件\\src\\io.txt "); /* FileOutputStream fileOutputStream =new FileOutputStream("文件\\src\\io.txt ");就是系统会自动封装成文件 相当于 FileOutputStream fileOutputStream =new FileOutputStream(new File("文件\\src\\io.txt ")); new File(name) File file =new File("文件\src\io.txt "); FileOutputStream f =new FileOutputStream(file); 这两个代码就相当于 FileOutputStream f =new FileOutputStream(new File("文件\src\io.txt ")); 也就是跟上面的FileOutputStream fileOutputStream =new FileOutputStream("文件\\src\\io.txt ");是相同的意思 也就是 这些方法都可以用在同一件事情上 创建字节输出流对象 */ /* 这个代码做了三件事情: *先创建文件 * 创建了字节输出流 * 让字节输出流对象指向创建好的文件 */ // void write(int b):将指定的字节写入此文件输出流 // fileOutputStream.write(99); // byte[] bytes ={97,98,99,100,101,102,103,104}; // fileOutputStream.write(bytes); // fileOutputStream.write(bytes,2,3); // 这些数据都是 转化为字符 // byte[] bytes ={'a','b','c','d','c'}; // fileOutputStream.write(bytes); // 直接转化为字符数组 byte[] bytes ="abcdcsd".getBytes(); fileOutputStream.write(bytes); /* 字节流写数据: **void write(int b):将指定的字节写入此文件输出流(一次写一个字节) * void write(byte[] b):将b.length字节从将指定的字节数组写入此文件输出流(一次写一个字符数组) * void write(byte[] b,int off,int len):将len字节从将指定的字节数组开始,从偏移量off开始写入此文件输出流(一次写一个字符数组的部分数组) 偏移量就是索引的位置,从这个索引off开始到我们所要的长度len结束 */ /* 构造方法: * FileOutputStream(String name):创建文件输出流以指定的名称写入文件 * FileOutputStream(File file):创建文件输出流以写入由指定的File对象表示的文件 */ // 任何一个流的最后要释放资源 // void close():关闭此文件输出流并释放与此流相关联的任何系统资源 fileOutputStream.close(); } }
package IODemo; /* 字节流写数据的两个问题: * 字节流实现换行: window:\r\n linux:\r mac:\n 但是这次我运行 用的是\n 就可以实在在文件夹里面用window自带的记事本打开实现换行 不仅仅只是在idea中 * 字节流写数据实现追加 public FileOutputStream(String name,boolean append) 创建文件输出流以指定的名称写入文件 如果第二个参数为true 则字节将写入文件的末尾而不是开头 */ import java.io.FileOutputStream; import java.io.IOException; public class IODemo2 { public static void main(String[] args) throws IOException { //实现追加数据,而不是每次运行前面的数据被删除 放入新的数据 要实现 存入写数据但是依旧保留了之前的数据 // FileOutputStream fileOutputStream =new FileOutputStream("文件\\src\\io.txt"); FileOutputStream fileOutputStream =new FileOutputStream("文件\\src\\io.txt",true); //这样每运行一次 都会在原有的基础上添加10个文本 // 写数据 for (int i=0;i<10;i++){ fileOutputStream.write("nihao".getBytes()); // 文件:nihaonihaonihaonihaonihaonihaonihaonihaonihaonihao // 换行 fileOutputStream.write("\n".getBytes());//完成换行 } } }