IO流分类:
按照数据的流向
输入流:读数据
输出流:写数据
按照数据类型来分
字节流
字节输入流;字节输出流
字符流
字符输入流;字符输出流
字节流写数据 - - 字节输出流 (new FileOutputStream("",boolean))
fos.write(98);
"abcdeww".getBytes();
fos.write(bytes2,9,9);
注意:
换行
追加 <-----> 清空重写
字节流写数据如何实现换行呢?
window:\r\n
linux:\n
mac:\r
public static void main(String[] args) throws IOException {
//fos.write(98);
//"abcdeww".getBytes();
//fos.write(bytes2,9,9);
FileOutputStream fos = new FileOutputStream("D:\\Users
\\Administrator\\IdeaProjects\\spark1015/fos.txt");
//输入单个字节
fos.write(98);
//字符转字节
byte[] bytes11 = "\n".getBytes();
fos.write(bytes11);
//字符转字节
byte[] bytes = "abcdeww".getBytes();
fos.write(bytes);
byte[] bytes121 = "\n".getBytes();
fos.write(bytes121);
//指定开始off,长度。注意:IndexOutOfBoundsException
byte[] bytes2 = "abcdeww".getBytes();
fos.write(bytes2,9,9);
//流的关闭
fos.close();
}
/*
字节流写数据的两个小问题:
1:字节流写数据如何实现换行呢?
window:\r\n
linux:\n
mac:\r
2:字节流写数据如何实现追加写入呢?
public FileOutputStream(String name,boolean append)
创建文件输出流以指定的名称写入文件。
如果第二个参数为true ,则字节将写入文件的末尾而不是开头
*/
public class FileOutputStreamDemo02 {
public static void main(String[] args) throws IOException {
//创建字节输出流对象
// FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");
FileOutputStream fos = new FileOutputStream("D:\\Users" +
"\\Administrator\\IdeaProjects\\spark1015/fos.txt",true);
//写数据
for (int i = 0; i < 4; i++) {
fos.write("hello33".getBytes());
fos.write("\r\n".getBytes());
}
//释放资源
fos.close();
}
}
流异常处理
流一定要关闭,因此放在finally处理,
引发出很多问题,再依次解决
public class FileOutputStreamDemo02 {
public static void main(String[] args) {
// try {
// FileOutputStream fos = new FileOutputStream
// ("myByteStream\\fos.txt");
// fos.write("hello".getBytes());
// fos.close();//可能流不会被关闭,需要走finally最终关闭
// } catch (IOException e) {
// e.printStackTrace();
// }
//加入finally来实现释放资源
//变量拿出去使用,可能底下代码没有初始化,初始化赋值null
FileOutputStream fos = null;
try {
fos = new FileOutputStream("D:\\Users
\\Administrator\\IdeaProjects\\spark1015/fos.txt" );
// fos = new FileOutputStream("Z:\\myByteStream\\fos.txt");
fos.write("hello".getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {//一定会走这一步,因此将流关闭的操作放在这里来处理
if(fos != null) {//可能出现的空指针异常
try {//关闭异常的出来
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
案例:文件复制
public static void main(String[] args) throws IOException {
long start =System.currentTimeMillis();
FileInputStream fis =
new FileInputStream("F:\\1-SIGNAL1-1-83.wps");
FileOutputStream fos =
new FileOutputStream("F:\\1-SIGNAL1-1-83-副本.wps");
int re;
while((re=fis.read())!=-1){
fos.write(re);
}
fos.close();
fis.close();
long end =System.currentTimeMillis();
System.out.println("代码运行时间: "+(end-start));
}