java io 和 new io实现复制功能

一、 java io实现复制功能
    public static void copy(String readName,String writeName){
        //复制功能
        try {
            //输入流读取一个文件,在写到另外一个文件里
            BufferedReader bf=new BufferedReader(new FileReader(readName));
            StringBuilder stringBuilder =new StringBuilder();
            String s;
            while((s=bf.readLine())!=null){
                stringBuilder.append(s);
                stringBuilder.append("\n");
            }
            //输出流写文件
            BufferedWriter bw= new BufferedWriter(new FileWriter(writeName));
            bw.write(stringBuilder.toString(),0,stringBuilder.length());

            //关流
            bf.close();
            bw.close();
            //设置编码格式
           /* InputStreamReader  in = new InputStreamReader(new FileInputStream(“demo.txt”),”UTF-8”);
*/
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
二、new ioshi 实现复制功能
 
  
   /**
     * newio读写通道方法
     */
    public static void  newio(){
        try {
            //new io
            //操作之间系统处于通道和缓冲之间  通道+缓冲
            //FileChannel 可读可写的通道
            FileChannel out = new FileOutputStream("C:\\Users\\ASUS\\Desktop\\linux\\test3.txt").getChannel(),
                         in = new FileInputStream("C:\\Users\\ASUS\\Desktop\\linux\\test3.txt").getChannel();

            out.write(ByteBuffer.wrap(("你好").getBytes()));//写到文件
            //ByteBuffer缓存,用于存放读取的文件,每次读取一个字节
            ByteBuffer byteBuffer=ByteBuffer.allocate(1024);
            //读文件
            in.read(byteBuffer);
            byteBuffer.flip();//相当于flush,将byteBuffer的数据刷新出去

            while(byteBuffer.hasRemaining()){
                // 设置字符编码集
                System.out.println(Charset.forName(System.getProperty("file.encoding")).decode(byteBuffer));
                System.out.println(System.getProperty("file.encoding"));
            }

            //关闭通道
            out.close();
            in.close();


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


你可能感兴趣的:(随写)