package cn.file;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 文件输出流;
*
* 今天抽空整理一篇关于Java文件输出流相关的小Demo;
*
* 首先我们要了解什么是IO流;
* 流即我们所说的流向;
* 那么在计算机中的流向则是跟内存相关的数据流向有关;因此还做了分类;
* 今天要分享的文件输出流就是其中的一种;
*
* 在开始之前,做一下基础的填白;
* 我们知道,在计算机中的数据文件,不管是视频(Video,vwdm...),图片(jpg,JPEG,png..),文本(txt,db...)都是以二进制数字的形式保存下来的;
* 这些数据都是一个个的字节数据;所以在数据移动的时候其实就是在移动相应的二进制字节数据;
* 那么接下来就开始我们对于流的认识;
*
* 输入流: 在计算机中我们将流向内存的数据流动称为输入流;即input;
* 输出流: 将流出内存的数据流动称为输出流;即output;
*
* 对于流的类型也有对应的分类;主要分为两类:字节流,字符流;
* 字节流: 所谓的字节流就是指以字节为单位进行数据读写的流;
* 字符流: 而字符流是指以字符单位进行数据读写的流;
*
* 那么在Java中我们常操作的主要是java.io下面的接口;
* 还是和流的分类一样,这些接口按照层级划分,顶层的类主要有:
* 字节流 字节输入流:InputStream; 字节输出流:OutputStream;
* 字符流 字符输入流:Reader; 字符输出流:Writer;
* 好
* 还是和以往一样,先创建一个自己的测试类;
* @author Administrator
*
*/
public class FileTest {
/**
* Java主函数|入口;
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// path: 初始化一个地址;(\\标示\,用作转义)
String path = "D:\\2020\\a.txt";
/**
* String.getBatys()是String类提供的一个数组转化的方法;
* 作用:
* 用来将字符串数据转化为数组用;
*/
byte[] bs = path.getBytes();
/**
* 实例化一个指定地址的File对象file;
*/
File file = new File(path);
/**
* 实例化一个指定File对象的文件输出流对象fosA;
* 需要注意:
* 直接指定File对象获取到的这种输出流对象会抹除掉原有文件内的数据;
* 除非在构造中调用是否抹除的Boolean申明;才能保留原始文件内的数据,进行数据追加;
* 例如:
* 如果要数据追加: new FileOutputStream(file,true);
* 如果要数据抹除,重新装载数据: new FileOutputStream(file,false);
*/
FileOutputStream fosA = new FileOutputStream(file);
/**
* 实例化一个指定地址的文件输出流对象fosB;
* 这里的指定初始化也是一样的;
* 如果以直接指定地址的方式来获取文件输出流对象,也是会抹除掉原由文件的数据内容;
* 除非在构造中调用是否抹除的Boolean申明;才能保留原始文件内的数据,进行数据追加;
* 例如:
* 如果要数据追加: new FileOutputStream("D:\\2020\\b.txt",true);
* 如果要数据抹除,重新装载数据: new FileOutputStream("D:\\2020\\b.txt",false);
*/
FileOutputStream fosB = new FileOutputStream("D:\\2020\\b.txt");
/**
* 字节数据写入;
*
* 1. 写入单个字节;
* 2. 写入字节数组;
* 3. 写入字节数组,从指定下标位off开始,写入指定的长度length;
*
* 注:
* \r表示: 回车符(return);
* \n标示: 换行符(newline);
*
* Windows系统里,每行结尾为回车+换行;所以是\r\n;
* Unix系统里,每行的结尾只有换行;即\n;
* Mac系统里,每行的结尾是回车;即\r;(从Mac OS开始同Linux系统统一)
*/
fosB.write('g');
fosB.write("\r\n".getBytes());
fosB.write(bs);
fosB.write("\r\n".getBytes());
fosB.write(bs,3,4);
fosB.write("\r\n".getBytes());
// 资源释放;
fosA.close();
fosB.close();
}
}
文件输入流:
Java_字节流-FileInputStream文件输入流纪要_大雷-CSDN博客