输出字节流:
------------| OutputStream 此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。
------------------| FileOutputStream 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流
FileOutputSream使用步骤:
1.找到目标文件
2.建立数据 的输出通道
3.把数据输出
4.关闭资源
FileOutputSream要注意的细节:
1.使用FileOutputStream(File file)写入数据的时候,如果目标文件存在,则在创建FileOutputStream输出通道的时候会自动创建目标文件。
2.使用FileOutputStream(File file)写入数据的时候,如果目标文件不存在,则在创建FileOutputSream输出通道的时候,则会先清空目标文件中原有的数据,然后再写入数据。
3.使用FileOutputStream(File file, boolean append)写入数据的时候,是在原来数据基础上追加数据,第二个参数为true。
4.使用FileOutputStream的write(int i)方法写数据的时候,虽然接收的是一个int类型(int 4字节 32位)的数据,但是真正写出的只是一个字节的数据,只是把低八位的二进制数据写出,其他二十四位数据全部丢弃。
package com.cn.input;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Author:Liu Zhiyong(QQ:1012421396)
* Version:Version_1
* Date:2016年7月24日21:54:03
* Desc:
输出字节流:
------------| OutputStream 此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。
------------------| FileOutputStream 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流
FileOutputSream使用步骤:
1.找到目标文件
2.建立数据 的输出通道
3.把数据输出
4.关闭资源
FileOutputSream要注意的细节:
1.使用FileOutputStream(File file)写入数据的时候,如果目标文件存在,则在创建FileOutputStream输出通道的时候会自动创建目标文件。
2.使用FileOutputStream(File file)写入数据的时候,如果目标文件不存在,则在创建FileOutputSream输出通道的时候,则会先清空目标文件中原有的数据,然后再写入数据。
3.使用FileOutputStream(File file, boolean append)写入数据的时候,是在原来数据基础上追加数据,第二个参数为true。
4.使用FileOutputStream的write(int i)方法写数据的时候,虽然接收的是一个int类型(int 4字节 32位)的数据,但是真正写出的只是一个字节的数据,只是把低八位的二进制数据写出,其他二十四位数据全部丢弃。
*/
public class Demo2 {
public static void main(String[] args) throws IOException {
// writeTest1();
// writeTest2();
writeTest3();
}
public static void writeTest1() throws IOException {
//1.找到目标文件
File file = new File("f:/b.txt");
//2.建立数据 的输出通道
FileOutputStream fileOutputStream = new FileOutputStream(file);
//3.把数据输出
fileOutputStream.write('e');
fileOutputStream.write('o');
fileOutputStream.write('f');
fileOutputStream.write('木');
//4.关闭资源
fileOutputStream.close();
}
//利用字节数组把数据写出
public static void writeTest2() throws IOException {
//1.找到目标文件
File file = new File("f:/b.txt");
//2.建立数据 的输出通道
FileOutputStream fileOutputStream = new FileOutputStream(file, true);//如果为 true,则将字节写入文件末尾处,而不是写入文件开始处
//把数据输出
String data= "\r\nccc请叫我木丁西a";
fileOutputStream.write(data.getBytes());
//关闭资源
fileOutputStream.close();
}
public static void writeTest3() throws IOException {
//1.找到目标文件
File file = new File("f:/b.txt");
//2.建立数据 的输出通道
FileOutputStream fileOutputStream = new FileOutputStream(file);//如果为 true,则将字节写入文件末尾处,而不是写入文件开始处
//把数据输出
String data= "abc";
fileOutputStream.write(data.getBytes(), 0, data.length());
System.out.println(data.length());
//关闭资源
fileOutputStream.close();
}
}
验证问题:使用FileOutputStream的write(
int
i)方法写数据的时候,虽然接收的是一个
int
类型(
int
4字节 32位)的数据,
但是真正写出的只是一个字节的数据,只是把低八位的二进制数据写出,其他二十四位数据全部丢弃。
例如:00000000-00000000-00000001-11111111 -> 11111111 -> -1
package com.cn.input;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
/**
* Author:Liu Zhiyong(QQ:1012421396)
* Version:Version_1
* Date:2016年7月25日15:53:18
* Desc:
验证问题:使用FileOutputStream的write(int i)方法写数据的时候,虽然接收的是一个int类型(int 4字节 32位)的数据,
但是真正写出的只是一个字节的数据,只是把低八位的二进制数据写出,其他二十四位数据全部丢弃。
例如:00000000-00000000-00000001-11111111 -> 11111111 -> -1
*/
public class Demo3 {
public static void main(String[] args) throws IOException {
writeTest();
readTest();
}
public static void writeTest() throws FileNotFoundException, IOException {
File file = new File("f:/a.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(511);
fileOutputStream.close();
}
public static void readTest() throws IOException{
File file = new File("f:/a.txt");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buff = new byte[1024];
int length = 0;
while((length = fileInputStream.read(buff)) != -1){
System.out.println(Arrays.toString(buff));
}
fileInputStream.close();
}
}