/** * 创建字节输出流对象,下面的的语句一共做了3件事情: * A:调用系统功能,创建了文件 * B:创建了字节输出流对象 * C:让字节输出流对象指向创建好的文件 */ FileOutputStream outputStream = new FileOutputStream("D:\\abc\\a.txt"); outputStream.write(97);//将指定的字节写入此文件输出流。 outputStream.close();//void close?() 关闭此文件输出流并释放与此流相关联的任何系统资源。
FileOutputStream outputStream = new FileOutputStream("D:\\abc\\a.txt"); outputStream.write(97);//将指定的字节写入此文件输出流。 byte []b={97,98,99,100,101}; //getBytes?() 使用平台的默认字符集将该 String编码为一系列字节,将结果存储到新的字节数组中。 byte[] bb="qwer".getBytes();//{113,119,101,114} outputStream.write(b); outputStream.write(b,1,3); outputStream.close();//void close?() 关闭此文件输出流并释放与此流相关联的任何系统资源。
FileOutputStream outputStream = new FileOutputStream("D:\\abc\\a.txt",true); byte[] bb="qwer".getBytes();//{113,119,101,114} for (int i=0;i<10;i++){ outputStream.write(bb); outputStream.write("\r\n".getBytes()); }
FileOutputStream outputStream = null; try { outputStream = new FileOutputStream("D:\\abc\\a.txt",true); } catch (FileNotFoundException e) { e.printStackTrace(); }finally { try { if (outputStream!=null){ outputStream.close();//无论什么时候都要关闭资源 } } catch (IOException e) { e.printStackTrace(); } }
FileInputStream inputStream =null; byte []bbb=new byte[3]; inputStream = new FileInputStream("D:\\abc\\a.txt"); int b=inputStream.read();//返回数据的下一个字节,如果达到文件的末尾,返回 -1 。 System.out.println(b);//97 System.out.print((char)b);//a //字节流读数据标准代码: int by; while ((by=inputStream.read())!=-1){ System.out.print((char)by); }
FileInputStream inputStream = new FileInputStream("D:\\abc\\a.txt"); byte bb[]=new byte[4]; int len;//每次实际读取的字节长度 /** * 注意!!!,例如我们的要读取的文档内容是:abcdefghij,一共有10个字节,那么: * 第一次读取4个字节:abcd,此时bb[]数组被填充为:{a,b,c,d} * 第二次读取4个字节:efgh,此时bb[]数组被填充为:{e,f,g,h} * 第三次读取2个字节:ij ,此时bb[]数组被填充为:{ij,g,h}.... * 总结:也就是说最后一次读取如果内容长度小于定义的数组长度,那么就会出问题:最后一次读取的内容包含部分上次读取的内容!!! */ while ((len=inputStream.read(bb))!=-1){ System.out.print(new String(bb));//abcdefghijgh } /** * 所以我们在使用byte[]创建字符串的时候只截取实际读取长度的内容转换成字符串就可以避免发生上面的错误了: * String?(byte[] bytes, int offset, int length) 通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String 。 */ byte b[]=new byte[1024];//一般都是1024或者1024倍数 int lengh;//每次实际读取的字节长度 while ((lengh=inputStream.read(b))!=-1){ System.out.print(new String(b,0,len)); }
FileOutputStream outputStream = new FileOutputStream("D:\\abc\\火灾.png"); FileInputStream inputStream = new FileInputStream("D:\\abc\\火.png"); byte b[]=new byte[1024];//一般都是1024或者1024倍数 int lengh;//每次实际读取的字节长度 while ((lengh=inputStream.read(b))!=-1){ outputStream.write(b,0,lengh);//注意,这里读取多少写出多少 }
原文:https://www.cnblogs.com/luzhanshi/p/13174643.html