Java的 io流( 六 )


在加密的时候可以拿着字节数据去异或一个数字,解密的时候再异或回来public static void main(String[] args) throws IOException {File file=new File("D:\\我的世界\\a1.txt");File file1=new File("D:\\我的世界\\a4.txt");decrypt(file,file1);}public static void encrypt(File file,File file1) throws IOException {if(file.isFile()){FileInputStream fis=new FileInputStream(file);FileOutputStream fos=new FileOutputStream(file1);int b;while ((b=fis.read())!=-1){fos.write(b^2);}fos.close();fis.close();}}public static void decrypt(File file,File file1) throws IOException {if(file.isFile()){FileInputStream fis=new FileInputStream(file1);FileOutputStream fos=new FileOutputStream(file);int b;while ((b=fis.read())!=-1){fos.write(b^2);}fos.close();fis.close();}}
第一种解法:
public static void main(String[] args) throws IOException {//读取数据FileReader fdr=new FileReader("D:\\我的世界\\b1.txt");StringBuilder sb=new StringBuilder();int ch;while ((ch=fdr.read())!=-1){sb.append((char)ch);}fdr.close();System.out.println(sb);//排序String str=sb.toString();String[] split = str.split("-");ArrayListlist=new ArrayList<>();for (int i = 0; i < split.length; i++) {list.add(Integer.parseInt(split[i]));}Collections.sort(list);//写出FileWriter fw=new FileWriter("D:\\我的世界\\b1.txt");for (int i = 0; i < list.size(); i++) {if(i==list.size()-1){fw.write(list.get(i)+"");}else{fw.write(list.get(i)+"-");}}fw.close();}
第二种解法:
public static void main(String[] args) throws IOException {//读取数据FileReader fdr=new FileReader("D:\\我的世界\\b1.txt");StringBuilder sb=new StringBuilder();int ch;while ((ch=fdr.read())!=-1){sb.append((char)ch);}fdr.close();System.out.println(sb);//排序String[] arr = sb.toString().split("-");Integer[] array = Arrays.stream(arr).map(new Function() {@Overridepublic Integer apply(String s) {return Integer.parseInt(s);}}).sorted().toArray(new IntFunction() {@Overridepublic Integer[] apply(int value) {return new Integer[value];}});//写出FileWriter fw=new FileWriter("D:\\我的世界\\b1.txt");String s=Arrays.toString(array).replace(",","-");String result=s.substring(1,s.length()-1);fw.write(result);fw.close();}
高级流
所谓高级流,就是把基本流做了一个封装,额外添加了一些功能
缓冲流
缓冲流可以提高读写的效率
缓冲流的体系结构
上面的就表示缓冲区
字节缓冲流
除了构造方法(创建对象的时候)有所不同其他的使用基本都类似
提高效率的原理:
底层自带了长度8192的缓冲区提高性能
方法名说明
( is)
把基本流包装成高级流,提高读取数据性能
( os)
把基本流包装成高级流,提高读取数据性能
在底层,真正读写数据的还是缓冲流包装的基本流
public static void main(String[] args) throws IOException {//这里创建缓冲流对象后,使用的时候与基本流是一样的,BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D:\\我的世界\\a1.txt"));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("D:\\我的世界\\copy.txt"));int b;while((b=bis.read())!=-1){bos.write(b);}//这里释放资源时不用关闭基本流,直接关闭缓冲流就行//缓冲流关闭的时候会把基本流关上bos.close();bis.close();}
public static void main(String[] args) throws IOException {//这里创建缓冲流对象后,使用的时候与基本流是一样的,BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D:\\我的世界\\a1.txt"));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("D:\\我的世界\\copy1.txt"));byte[]bytes=new byte[1024];int len;while((len=bis.read(bytes))!=-1){bos.write(bytes,0,len);}//这里释放资源时不用关闭基本流,直接关闭缓冲流就行//缓冲流关闭的时候会把基本流关上bos.close();bis.close();}