zoukankan      html  css  js  c++  java
  • I/O————字节流

    InputStream字节输入流 

    OutputStream字节输出流 

    用于以字节的形式读取和写入数据

    下面是使用

    字节输入流读取文件
    字节输出流写入文件

     文件可能不存在,所以使用try catch

    public class StreamTest {
    
        public static void main(String[] args) {
            //准备一个文件文件内容是LOL,用来 字节输入流读取文件
            File file1 = new File("D:\\lolfilder\\lol.exe\\lol.txt");
            //准备一个空文件,用来字节输出流写入文件
            File file2 = new File("D:\\lolfilder\\lol.exe\\lol1.txt");
            
            try {
                FileInputStream fis = new FileInputStream(file1);
                FileOutputStream fos = new FileOutputStream(file2);
                byte[] all = new byte[(int) file1.length()];
                byte[] all2 = {65,97};
                fis.read(all);
                fos.write(all2);
                for(byte temp:all) {
                    System.out.println(temp);
                }
                fis.close();
                fos.close();
            } catch (Exception e) {
                
                e.printStackTrace();
            }
    
        }

    运行结果是:"LOL"的ASCII码值

    空文件lol1.txt写入了 Aa

    拆分文件与合并文件

    拆分文件

    将文件按照指定大小分割成多个文件,并且新文件的命名规则为 filename_no.txt

    主要使用了FileInputStream中的read方法

    public class FileSplitTest {
        private static final int SPLIT_SIZE=100;
    
        public static void main(String[] args) {
             File file = new File("D:\\lolfilder\\lol.exe\\filesplitdemo.txt");
             splitFile(file, SPLIT_SIZE);
    
        }
        public static void splitFile(File file,int size) {
            try/*(FileInputStream fis = new FileInputStream(file);)
            可以将流定义在try中,当try,catch或finally结束后会自动关闭流,这是jdk7之后的技术
            
            */ {
                
                FileInputStream fis = new FileInputStream(file);
                byte []fisb = new byte[size];
                //fis.read(fisb);
                for(int i=1;fis.read(fisb, 0, size)>0;i++) {
                    File subFile = new File(file.getAbsolutePath().replace(".txt",  "_" + i + ".txt"));
                    FileOutputStream fos = new FileOutputStream(subFile);
                    fos.write(fisb);
                    fos.close();
                }
                fis.close();
                
                
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

     合并文件

    public static void main(String[] args) {
             int i = 1;
             //建立输入文件
             File outFile = new File("D:\\lolfilder\\lol.exe\\mergedfile.txt");
             try {
                 //建立输出流
             FileOutputStream fos = new FileOutputStream(outFile);
             //通过i依次读取
             while(new File("D:\\lolfilder\\lol.exe\\filesplitdemo_"+i+".txt").exists()) {
                
                    File f = new File("D:\\lolfilder\\lol.exe\\filesplitdemo_"+i+".txt");
                    FileInputStream fis = new FileInputStream(f);
                    byte[] temp = new byte[fis.available()];
                    fis.read(temp);
                    fos.write(temp);
                    i++;
                    fis.close();
                } 
             fos.close();
             }catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
             }
  • 相关阅读:
    IIS 404.17 错误解决方案
    复制文件夹
    Sliverlight Slide 的左右滑动
    Web前端学习第三天——————HTML篇.013图片格式
    Web前端学习第三天——————HTML篇.010布局与选择器
    Web前端学习第二天——————HTML篇.009css
    Web前端学习第一天—————HTML篇.004个人简历制作
    Web前端学习第二天——————HTML篇.008表单
    Web前端学习第一天——————HTML篇.004百度云盘目录
    Web前端学习第三天——————HTML篇.011选择器权重
  • 原文地址:https://www.cnblogs.com/yeyangtao/p/10807615.html
Copyright © 2011-2022 走看看