InputStream(抽象的)字节输入流顶层父类
FileInputStream子类:
构造方法:
FileInputStream(path) 底层帮我们转File类型了,所以常用此方法
FileInputStream(file)
1.输入流如果找不到要读取的文件会抛异常
2.一定要是读取文件,如果是文件夹会抛异常
OutputStream(抽象的)字节输入流的顶层父类
子类FileOutputStream
构造方法
FileOutputStream(path) 常用此方法
fileOutputStream(file)
1.如果指定路径的文件不存在,那么会帮我们创建文件,再向文件中写入数据
2.如果指定整体路径不存在会抛异常
3.当指定文件已经存在,那么写入的数据会将原来的数据覆盖
4.流没关之前可以写多个数据
字节流不带缓冲区,flush() 没有用
FileInputStream input = new FileInputStream("F:\\aaa\\.1.txt");
FileOutputStream out = new FileOutputStream("F:\\aaa\\1.txt");
byte[] buf = new byte[1024];
int len = 0;
while((len = input.read(buf))!=-1){
out.write(buf,0,len);
}
input.close();
out.close();
追加数据和换行:
FileOutputStream(String name,boolean append)
换行:
System.lineSeparator();
System.getProperty("line.separatory");
文件切割:102410242 切割2M
文件有文件头和文件尾,切割完不能完全打开,只要mp3格式可以正常打开
FileInputStream input = new FileInputStream("F:\\aaa\\视频.mp4");
byte[] buf = new byte[1024*1024*2];
int len = 0;
int name = 1;
while((len = input.read(buf))!=-1){
FileOutputStream out = new FileOutputStream("F:\\aaa\\"+name+".mp4");
out.write(buf,0,len);
name++;
out.close();
}
input.close();
文件合并:
FileOutputStream out = new FileOutputStream( "F\\bbb\\1.txt");
for (int i = 1; i < 10; i++) {
FileInputStream input = new FileInputStream("F:\\aaa\\" +i +".txt" );
byte[] buf = new byte[1204*1024*2];
int len = 0;
while((len = input .read(buf )) != -1){
out.write( buf, 0, len);
}
input.close();
}
out.close();
在IO流中,只有字节流具备读写文件的能力
字符流 = 字节流 + 编码表
编码表:
?:表示位置字符
美国:ASCII 1个字节没有汉字
欧洲:ISO-8859-1 没有未知字符,1个字节,没有汉字
中国:GBK
国际:Unicode(一个字符2个字节)----->utf-8(中文3个字节,字母1个字节)
转换流:
硬盘---->内存 字节------>字符 字符转字符输入转换流
内存----->硬盘 字符------->字节 字节转字符输出转换流
OutputStreamWriter writer = new OutputStreamWriter( new FileOutputStream("F:\\aaa\\utf.txt" ), "utf-8" );
writer.write( "你好");
writer.close();
InputStreamReader reader = new InputStreamReader(new FileInputStream("F:\\aaa\\utf.txt" ),"gbk" );
char[] buf = new char[1024];
int len = 0;
while((len = reader .read(buf )) != -1){
System. out.println(new String(buf , 0, len ));
}
模仿Scanner键盘录入:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine();
网友评论