当前位置: 首页 > news >正文

【好程序员特训营】Java的Io操作

Java IO的一般使用原则:

一、按数据来源(去向)分类:
1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter
2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream
3、是Char[]: CharArrayReader, CharArrayWriter
4、是String: StringBufferInputStream, StringReader, StringWriter
5、网络数据流:InputStream, OutputStream, Reader, Writer

二、按是否格式化输出分:
1、要格式化输出:PrintStream, PrintWriter

三、按是否要缓冲分:
1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter

四、按数据格式分:
1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream结束的子类
2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类

五、按输入输出分:
1、输入:Reader, InputStream类型的子类
2、输出:Writer, OutputStream类型的子类

文件拷贝

try {
            File inputFile = new File(args[0]);
            if (!inputFile.exists()) {
                System.out.println("源文件不存在,程序终止");
                System.exit(1);
            }
            File outputFile = new File(args[1]);
            InputStream in = new FileInputStream(inputFile);
            OutputStream out = new FileOutputStream(outputFile);
 
            byte date[] = new byte[1024];
            int temp = 0;
            while ((temp = in.read(date)) != -1) {
                out.write(date);
            }
 
            in.close();
            out.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

java读文件:实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数,除此之外没有其他字符

 String fileName = "D:/date.java.bak";
        // String fileName = "D:/test.qqq";
        String line;
        int i = 0, j = 0, f = 0, k = 0;
        try {
            BufferedReader in = new BufferedReader(new FileReader(fileName));
            line = in.readLine();
            while (line != null) {
                // System.out.println(line);
                char c[] = line.toCharArray();
                for (int i1 = 0; i1 < c.length; i1++) {
                    // 如果是字母
                    if (Character.isLetter(c[i1]))
                        i++;
                    // 如果是数字
                    else if (Character.isDigit(c[i1]))
                        j++;
                    // 是空格
                    else if (Character.isWhitespace(c[i1]))
                        f++;
                }
                line = in.readLine();
                k++;
            }
            in.close();
            System.out
                    .println("字母:" + i + ",数字:" + j + ",空格:" + f + ",行数:" + k);
        } catch (IOException e) {
            e.printStackTrace();
        }

从文件(d:\test.txt)中查出字符串”aa”出现的次数

try {
            BufferedReader br = new BufferedReader(new FileReader(
                    "D:\\test.txt"));
            StringBuilder sb = new StringBuilder();
            while (true) {
                String str = br.readLine();
                if (str == null)
                    break;
                sb.append(str);
            }
            Pattern p = Pattern.compile("aa");
            Matcher m = p.matcher(sb);
            int count = 0;
            while (m.find()) {
                count++;
            }
            System.out.println("\"aa\"一共出现了" + count + "次");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


相关文章:

  • 【好程序员特训营】Java异常处理
  • 【好程序员特训营】Java字符串截取分割
  • 【好程序员特训营】Java线程同步初探
  • 【好程序员特训营】Java中常用的排序方法
  • 【好程序员特训营】Java中随机数处理
  • 【好程序员特训营】IO常用流的功能及特性
  • 【好程序员特训营】Java类与对象
  • 【好程序员特训营】Java网络连接测试小例子
  • Unity4.6中修改RectTransform的宽度和高度
  • unity3D 动态导入FBX、obj模型
  • UL标签的padding与margin默认值
  • 一个让img居中居左居右的方法
  • 谷歌 CardBoard Unity开发基础
  • Unity使用Face++
  • Processing 用图片填充形状
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【译】理解JavaScript:new 关键字
  • Angular Elements 及其运作原理
  • Apache Pulsar 2.1 重磅发布
  • Apache的80端口被占用以及访问时报错403
  • Codepen 每日精选(2018-3-25)
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • mongo索引构建
  • OSS Web直传 (文件图片)
  • python大佬养成计划----difflib模块
  • QQ浏览器x5内核的兼容性问题
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 安装python包到指定虚拟环境
  • 大型网站性能监测、分析与优化常见问题QA
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 来,膜拜下android roadmap,强大的执行力
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端面试总结(at, md)
  • ​用户画像从0到100的构建思路
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #Java第九次作业--输入输出流和文件操作
  • #图像处理
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (2)Java 简介
  • (52)只出现一次的数字III
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (MATLAB)第五章-矩阵运算
  • (定时器/计数器)中断系统(详解与使用)
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)php新闻发布平台 毕业设计 141646
  • (三)docker:Dockerfile构建容器运行jar包
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)EOS中账户、钱包和密钥的关系
  • 、写入Shellcode到注册表上线
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 使用配置文件
  • .NET文档生成工具ADB使用图文教程
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——