IO流什么都能输入输出的字节流

mac2024-10-02  10

字节流 有平民输入输出流 也有贵族输入输出流

首先平民文件输出流 ,可以往文件中写入数据 慢

平民文件输出流

FileOutputStream(File file) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。 FileOutputStream(String name) 创建一个向具有指定名称的文件中写入数据的输出文件流 write(byte) 一次录入一个字节数据 byte[] bytes = {101, 102, 103}; out.write(bytes); String str="好好学习,天天向上,爱生活,爱Java"; byte[] bytes1 = str.getBytes(); out.write(bytes1); //可以写入字节数组的一部分 out.write(str.getBytes(),0,12); out.write(bytes,1,2);

//流使用完毕,要记得关闭流,释放资源, out.close();//记得流使用完毕,要关闭流

直接传文件的字符串路径,如果关联的这个文件不存在,会自动创建

FileOutputStream out = new FileOutputStream("b.txt");

写出换行符"\r\n" windows 系统的换行符

FileOutputStream(String name, boolean append) 创建一个向具有指定 name 的文件中写入数据的输出文件流。 FileOutputStream(File file, boolean append) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。 FileOutputStream out = new FileOutputStream("d.txt", true);

参数:追加写入 true 代表追加,false 不追加

平民文件输入流

FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。 FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。

注意:输入流所关联的文件,如果不存在,就会报错

FileInputStream in = new FileInputStream("e.txt"); //读取文件中的数据 int len = in.read();//一次读取一个字节,如果读取不到,返回 -1 我们要拿这个 -1 来判断文件是否读取完毕 System.out.println(len);

in.close(); //记得释放资源

FileInputStream in = new FileInputStream(new File("e.txt")); //创建一个字节数组,充当缓冲区 byte[] bytes = new byte[1024]; //int len = in.read(bytes); //把数据读取到缓冲区 int len = in.read(bytes); System.out.println(len); String s = new String(bytes,0,len); System.out.println(s); in.close();

读入一个字节,写出一个字节进行文件的复制

FileInputStream in = new FileInputStream("MyTest2.java"); File file = new File("E:\\test"); file.mkdirs(); FileOutputStream out = new FileOutputStream(new File(file,"MyTest2.java")); //复制,读取一个字节,写出一个字节 int len=0; while ((len=in.read())!=-1){ out.write(len); //写出字节 out.flush(); } /* while (true){ int zijie = in.read(); if(zijie==-1){ break; } out.write(zijie); }*/ //释放资源 in.close(); out.close();

一次读写一个字节数组来复制,来复制,音频文件

File file = new File("C:\\Users\\ShenMouMou\\Music\\我的图片和音乐\\音乐\\新上海滩 - 上海滩.mp3"); FileInputStream in = new FileInputStream(file); FileOutputStream out = new FileOutputStream("E:\\test\\" + file.getName()); //显然读写一个字节,复制文件太慢 //我们用一次读写一个字节数组来复制 int len=0;//记录读取到的有效字节个数 //创建一个字节数组,充当缓冲区 byte[] bytes = new byte[1024*8]; while ((len=in.read(bytes))!=-1){ System.out.println("次数"); out.write(bytes,0,len); out.flush(); } //释放资源 out.close(); in.close();

异常处理结合字节流实例

//自己处理流的异常 FileInputStream in = null; FileOutputStream out = null; try { System.out.println(1 / 0); in = new FileInputStream("C:\\Users\\ShenMouMou\\Music\\我的图片和音乐\\疯狂动物城.mp4"); out = new FileOutputStream("E:\\test\\疯狂动物城.mp4"); int len = 0;//记录读取到的有效字节个数 //创建一个缓冲区 byte[] bytes = new byte[1024 * 1024 * 10]; while ((len = in.read(bytes)) != -1) { out.write(bytes, 0, len); out.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { //try 里面有没有遇到异常,都会执行 //释放资源 try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } }

高效(贵族)的字节流

该类实现缓冲的输出流。***通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。***这就是贵族的特权

BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。 BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。 BufferedInputStream 为另一个输入流添加一些功能, 即缓冲输入以及支持 mark 和 reset 方法的能力。 在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。 构造方法摘要 BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。 BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(string)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(string));
最新回复(0)