import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* // 输入字节流 输出字节流
InputStream outputStream
// 字节流是用来操作媒体数据的
//字符流抽象基类。操作文字的
Reader Writer
// 往文件里面写内容
// 字符串一个get数组的方法
OutputStream os = new OutputStream("D:\\war3\\sgt.txt");
os.write("Hello World!!".getBytes());
// 字符串刷新,让他提交。不然不会写
os.flush();
// 用完流必须关闭流对象,不然会占着系统资源会引起操作系统的内存溢出
os.close();
InputStream 读取的时候 采用数组1024读取。如果文件过大,读取一遍1024发现
没有读取完毕的时候需要定义一个循环来,开始读取
如果读取时候小于1024 后面的就回被空格所代替。所以就需要在程序里面截取 数组实际长度
* @author muyoushushu
*
*/
public class FileStreamDemo {
public static void main(String[] args) {
OutputStream os = null;
InputStream is = null;
try {
os=new FileOutputStream("D:\\xx.txt");
os.write("拒绝平庸,如果平庸。必须去死".getBytes());
os.flush();
is = new FileInputStream("D:\\xx.txt");
byte buf[] = new byte[1024];
int len;
StringBuilder sb = new StringBuilder();
//如果这个文件读取完毕的时候,read返回值是一个-1
while((len =is.read(buf)) != -1){
// 重新定义一个数组
byte btye[];
if(len < 1024){
btye= new byte[len];
// 数组 copy
System.arraycopy(buf, 0, btye,0,len);
sb.append(new String(btye));
} else {
sb.append(new String(buf));
}
}
System.out.println(sb.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}