- 1.创建字节输出流对象
- 2.调用 write() 方法写入数据
- 3.释放资源
- public void write(int b)
- public void write(byte[] b)
- public void write(byte[] b,int off,int len)
public class FileOutputStreamDemo2 { public static void main(String[] args) throws IOException { //创建字节输出流对象 FileOutputStream fileOutputStream = new FileOutputStream("D:\\o.txt"); //public void write(int b) 写入的是数字,输出的是数字对应的Assic码 // fileOutputStream.write(99); // fileOutputStream.write(96); // fileOutputStream.write(35); // fileOutputStream.write(56); // public void write(byte[] b) 写入数组 byte[] bytes = {33,56,87,57,22,57,14,89,22}; // fileOutputStream.write(bytes); //public void write(byte[] b,int off,int len) fileOutputStream.write(bytes, 2, 3); fileOutputStream.close(); } }
换行问题:
- 1、没有换行,如何实现换行呢?
为什么上一个代码中没有进行换行呢?
因为我们在写数据的时候,只写了字节,没有写入换行符
如何实现呢?
理论上,我们每写完一部分的时候,就写一个换行符进行换行
注意,每一个系统对应的换行不大一样
Windows:\r\n
Mac: \r
Linux: \n
追加问题
- 2、每次运行写入的时候,会把上一次运行的数据进行覆盖,如何实现追加写入呢?
追加:在原有的文件内容上继续添加一些新的内容
覆盖:将原有的文件内容删掉,再添加一些新的内容
public class FileOutputStreamDemo3 { public static void main(String[] args) throws IOException { //创建字节输出流对象 //如果不添加后面的 append 参数的话。 默认的是 FALSE ,不追加写入 FileOutputStream fileOutputStream = new FileOutputStream("D:\\p.txt",true); //调用 write 方法写入数据 for (int i = 0; i < 5; i++) { fileOutputStream.write(("大数据,yyds"+i).getBytes()); fileOutputStream.write("sdfasdf".getBytes()); //添加换行操作 fileOutputStream.write("\r\n".getBytes()); } fileOutputStream.close(); } }
字节输入流:ImputStream
子类:FileInputStream
- 1、创建字节输入流对象
- 2、调用方法读取数据
- 3、释放资源
- FileInputStream(File file)
- FileInputStream(String name)
- public int read()
- public int read(byte[] b)
public class FileInputStreamDemo1 { public static void main(String[] args) throws IOException { //创建字节输入流对象 // File file = new File("D:\\a.txt"); // FileInputStream fileInputStream = new FileInputStream(file); FileInputStream fileInputStream = new FileInputStream("D:\\a.txt"); // public int read()读取 // System.out.println((char)fileInputStream.read()); // System.out.println((char)fileInputStream.read()); // System.out.println((char)fileInputStream.read()); // System.out.println((char)fileInputStream.read()); /* //我们发现,当文件的内容过多的时候,一个字节一个字节去读取,发现很麻烦,而且语句都是一样 //使用循环改进,使用哪一种循环呢? //因为我们不知道要循环多少次才能读到文件的末尾,所以采用while循环 //使用while循环,就得有一个循环条件 //想一下,这个循环条件是不是就是读到了末尾就不读 //如何使用代码表示读到文件末尾呢?如果达到文件的末尾, -1 。 //一次读取一个字节 */ int len = 0; while ((len = fileInputStream.read()) != -1){ System.out.println((char)len); } fileInputStream.close(); } }
public class FileInputStreamDemo2 { public static void main(String[] args) throws IOException { //创建字节输入对象 FileInputStream fileInputStream = new FileInputStream("D:\\b.txt"); //创建字节数组,依据大小来读取 byte[] bytes = new byte[4]; int len = 0; while ((len = fileInputStream.read(bytes)) != -1){ System.out.println(new String(bytes, 0, len)); } } }