Scala的文件读写与正则表达式

Nestjs框架: 集成 Prisma NestJS官方文档提供了两种数据库相关的内容:Techniques下的数据库板块和Recipes下的具体数据库集成方案。本文以Prisma为例,演示了如何集成Prisma到NestJS项目中。首先创建NestJS项目并安装Prisma,配置MySQL数据库连接。通过Prisma CLI初始化项目、定义数据模型并生成迁移文件。接着创建Prisma模块和服务,配置Prisma客户端连接数据库。最后在控制器中注入PrismaService实现数据查询。整个过程包含了Docker启动MySQL、Prisma模型定 阅读详情

在本篇博客中你将会学习并了解常用的文件处理任务,例如读取文件的一行文本,本博客的要点包含:

  1. Source.fromFile(…).getLines.toArray 输出文件所有行
  2. Source.fromFile(…).mkString 以字符串形式输出文件内容
  3. 将字符串转换为数字,可以使用toInt或toDouble方法
  4. 使用java的PrintWriter写入文本文件
  5. “正则”.r是一个Regex对象
  6. 若你的正则表达式包含反斜杠或者引号,请用"""…"""
  7. 正则模式包含分组,可以使用for(regex(变量1…,变量2)<- 字符串)

本篇博客要点如下:

读取行
// 读取文件所有的行,可以调用scala.io.Source对象的getLines方法:
val source = Source.fromFile("a.txt","utf-8")
val lineIterator = source.getLines
结果是迭代器可以使用for循环处理这些行
for(i <- lineIterator) println(i)
也可以使用迭代器应用toArray或toBuffer方法,将这些行放到数组力或者数组缓冲行中,若想将读取的的文件作为一个字符串,只需val conents = source.mkString
下面是简单的代码实例:读取桌面上的a.txt

object ReadFile {
  def main(args: Array[String]): Unit = {
    val read = new ReadFile()
    val resource: String = "C:\\Users\\DonnieGao\\Desktop\\a.txt"
    val encode = "UTF-8"
    read.readFile(resource, encode)
    println(read.readFileToStr(resource, encode))
  }
}

class ReadFile {
  /**
    * 一行行读取文件的内容
    *
    * @param resource 文件路径
    * @param code     文件编码格式
    */
  def readFile(resource: String, code: String): Unit = {
    var source: BufferedSource = null
    try {
      // 获取文件的Source对象,第一个参数是文件的路径,第二个文件的编码格式
      source = Source.fromFile(resource, code)
      val lineIterator = source.getLines()
      while (true) {
        if (lineIterator.hasNext) {
          println(lineIterator.next())
        } else {
          return
        }
      }
    } finally {
      // 释放资源
      source.close()
    }
  }

  /**
    * 将文本文件所有内容作为字符串
    *
    * @param resource 文件路径
    * @param code     文件编码格式
    * @return
    */
  def readFileToStr(resource: String, code: String): String = {
    // 获取文件的Source对象,第一个参数是文件的路径,第二个文件的编码格式
    var source: BufferedSource = null
    try {
      source = Source.fromFile(resource, code)
      source.mkString
    } finally {
      source.close()
    }
  }
}

读取字符

要将文件中读取单个字符,可以把Source对象当作迭代器,若仅仅只是想查看字符可以调用Source对象的buffered方法。

读取词法单元和数字
读取源文件中所有空格隔开的词法单元
val tokens = source.mkString.split("\\s+")
若有个基本都是浮点型的文件,可以将其读取到数组中:
val numbers = for (w <- tokens) yield w.toDouble 或者也可 
val numbers = token.map(_.toDouble)
读取二进制文件

Scala并没有提供读取二进制文件的方法,可以使用java读取二进制的方法,代码示例

val file = new File(fileName)
val in = new FileInputStream(file)
val bytes = new Array[Byte](file.length.toInt)
in.read(bytes)
in.close()
写入文本文件

Scala没有内建对写入文件的支持,可借助java进行文件写入操作例如使用java.io.PrintWriter

  /**
    * Scala写入文借助java的PrintWriter
    */
  def write(): Unit = {
    val out = new PrintWriter("C:\\Users\\DonnieGao\\Desktop\\test.txt")
    for (i <- 0 to 100) out.println(i)
    out.close()
  }
访问文件目录

Scala中没有直接访问某个目录下的所有文件的方式或者递归遍历有目录的类

  /**
    * 使用java列举下所有的文件夹
    * @param dir 文件目录路径
    */
  def dir(dir:String) = {
    val dirFile = new File(dir)
   val arrayFile= dirFile.listFiles()
    for (i <- arrayFile){println(arrayFile.toBuffer)}
  }
序列化

在java中声明一个可以被序列号的类通常是下面这种:

public class Person implements java.io.Serializable {
    private static final long serialVersionUID = 4436475322569107137L;
}

Scala中声明一个可以被序列化的类通常是下面这种:
@SerialVersionUID(12356L) class ReadFile extends Serializable {
    
}
正则表达式

Scala中提供了正则操作处理scala.util.matching.Regex让这件事情可以变得简单。构造一个Regex对象,用String类的r方法即可

object RegexDemo {

  def main(args: Array[String]): Unit = {
    // 初始化正则对象
    val numPattern = "[0-9]+".r
    val regex = "13 welcome to beijing"
    // findAllIn方法返回遍历所有匹配的迭代器,可以在for循环中使用
    for (matchString <- numPattern.findAllIn(regex)) {
      println(matchString)
    }
    // 查询字符串首个匹配项
    println(numPattern.findFirstIn(regex))
    // 检查某个字符串的开始部分能匹配,可以使用findPrefixOf
    println(numPattern.findPrefixOf(regex))
  }
【银河麒麟桌面系统】安装英伟达(NVIDIA)显卡驱动 本文详细介绍了在麒麟桌面操作系统V10 SP1(版本号2503)上安装NVIDIA RTX 5060显卡驱动的完整流程。主要内容包括:查看系统版本信息,从NVIDIA官网下载Linux 64位驱动,授予执行权限后运行安装程序,处理安装过程中的X server警告、32位库安装、DKMS模块选择等问题,以及安装完成后如何验证驱动状态。同时提供了卸载驱动的步骤和常见问题解决方案,如处理X server警告、libglvnd EGL依赖问题等。该指南适用于需要在国产麒麟系统上安装NVIDIA显卡驱动的用户,包含完 阅读详情

相关推荐

LIS3DHTR三轴加速度计Arduino驱动与嵌入式集成指南

加速度计是嵌入式系统中实现运动感知、姿态解算和振动分析的核心传感器。其工作原理基于MEMS微机械结构在惯性力作用下的电容变化,经片内ADC转换为数字信号;I²C接口因其硬件资源占用少、布线简洁,成为低功耗物联网节点的主流通信方式。技术价值体现在高分辨率(12位)、多量程(±2g~±16g)与低功耗(待机电流仅2µA)的平衡,支撑电池供电设备长期运行。典型应用场景包括可穿戴设备的姿态识别、工业预测性维护中的振动监测,以及智能硬件的敲击/跌落检测。本文围绕LIS3DHTR芯片及其Grove模块,详解Arduin

weixin_42584758的博客 594

scala 读取txt文件(从文件读取)

文件格式分别如下 package txt object ReadTxt { def readFromTxtByLine(filePath:String) = { //导入Scala的IO包 import scala.io.Source //以指定的UTF-8字符集读取文件,...

张音乐的博客 2万+

Zynq工程IP核封装:XCI引用与约束继承实战指南

IP核封装是FPGA系统设计中实现模块复用、团队协作与技术资产沉淀的关键环节。其本质是将功能逻辑、时序约束、接口协议和硬件配置统一抽象为可配置、可验证、可演进的标准化组件。核心原理在于通过XCI文件保留IP核的参数化定义能力,依托Vivado IP Packager实现约束继承、端口自动映射与时钟域解耦,从而保障跨项目集成的时序可信性与约束完备性。该技术广泛应用于Zynq SoC视频处理、高速接口(如HDMI/TMDS)、多时钟域控制系统等场景,尤其在需要长期维护与版本迭代的工业级嵌入式开发中具有不可替代的

weixin_42593701的博客 122

scala读写linux上的文件,Scala的文件读写操作与正则表达式

目录在本篇文章中你将会学习并了解常用的文件处理任务,例如读取文件的一行文本,本博客的要点包含:1.Source.fromFile(...).getLines.toArray 输出文件所有行2.Source.fromFile(...).mkString 以字符串形式输出文件内容3.将字符串转换为数字,可以使用toInt或toDouble方法4.使用java的PrintWriter写入文本文件5.“正...

weixin_29832179的博客 656

jetson orin nano 使用cuPCL

jetson开发板上使用pcl时,正常使用的是cpu,拖慢了整体的效率。cuPCL有一些库用于使用CUDA处理点云。

weixin_42256401的博客 1019

图的一些基本知识:图,邻居,度矩阵,邻接矩阵

目录前言图(graph)邻居(neighborhood)度矩阵(degree)邻接矩阵(adjacency)参考文献 前言       本文介绍了一些图论的基础知识,包括图的表示、邻接矩阵、度矩阵等(边不带权值的情况),本文中某些图片或者知识的参考/来源已列于本文最后。 图(graph)       图用G=(V, E)表示,V中元素为...

luzaijiaoxia0618的博客 6万+

Scala的文件读写操作与正则表达式

目录 在本篇博客中你将会学习并了解常用的文件处理任务,例如读取文件的一行文本,本博客的要点包含: Source.fromFile(...).getLines.toArray 输出文件所有行 Source.fromFile(...).mkString 以字符串形式输出文件内容 将字符串转换为数字,可以使用toInt或toDouble方法 使用j...

weixin_30684743的博客 160

STM32F4使用CUBEMX ADC定时采样+DMA

STM32、FFT、ADC、TIM

m0_62379750的博客 4222

Scala文件和正则表达式

1 读取行 import scala.io.Source object FileSyllabus { def main(args: Array[String]): Unit = { //文件读取 val file1 = Source.fromFile("C:\\Users\\61661\\Desktop\\scala笔记....

Faded1573606285的博客 247

深度揭秘!用 DeepSeek 打造超智能电商客服系统全流程

摘要:本文围绕使用 DeepSeek 开发电商智能客服展开详细教程。先介绍前期准备,包括了解 DeepSeek、获取 API 权限与搭建开发环境。接着阐述数据收集预处理,结合电商业务逻辑实现商品与订单信息查询。还提及优化性能的方法,如模型微调、多轮对话管理和错误处理。然后说明了基于 Web 和云平台的部署方案。最后强调持续监控和改进的重要性,通过设置监控指标、收集分析用户反馈来优化系统,助力开发者打造高效电商智能客服。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 7812

基于计算机视觉的无人便利店技术:从算法到部署的系统化实战指南

摘要:本文系统介绍了基于计算机视觉的无人便利店技术方案,提出"商品检测-跟踪-动作识别-防损-结算"五段式流水线架构。详细阐述了YOLOv8-Seg商品检测、OC-Sort多目标跟踪、3D-CNN+ST-GCN动作识别等核心算法实现,并完成NVIDIA Jetson Xavier NX边缘端的优化部署。通过TensorRT量化、DeepStream加速等技术手段,系统在保持94.7%动作识别准确率的同时,将漏单率降至0.8%,单店云端算力成本较行业平均降低84%。所有代码已开源,可直接应

博客 624

深圳大数据学习:Scala系列之文件以及正则表达式

深圳大数据学习:Scala系列之文件以及正则表达式 7.1 读取行 导入scala.io.Source后,即可引用Source中的方法读取文件信息。 import scala.io.Source object FileDemo extends App{ val source = Source.fromFile(“C:/Users/admin/res.txt”) //返回一个迭代器 val line...

239

EMC辐射整改常用的4种整改方法

例如,产品设计研发工程师们根据需求,设计出效果良好的滤波电路,置入产品I/O(输入/输出)接口的前级,可使因传导而进入系统的干扰噪声消除在电路系统的入口处;通过选择元器件和合理安排的电路系统,使干扰的影响减少。有些频率点是通过电路板上走线分布参数所决定的,通过前述方法不大有用,此类整改通过在走线中增加小的电感、电容、磁珠来改变电路参数结构,使其移到限值要求较高的频率点上。电线电缆的分类整理在电子设备中,线间耦合是一种重要的途径,也是造成干扰的重要原因,因为频率的因素,可大体分为高频耦合与低频耦合。

学海无涯的专栏 3120

基于Source和正则表达式的Scala网页内容抓取

网页内容的抓取使用了Scala标准库的Source,网页内容的提取使用了正则表达式。中间练习了集合类的一些操作和文件读写操作,对正则表达式也重温了一下,特别是跨行匹配(多行匹配)研究了一些时间。提取后的文本写在了文件中。在Ubuntu 10.04 和 Scala 2.10.0 下运行成功。 代码如下: import java.io._ def getIndex() = { val

w_j_w2010的博客 593

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

scala当中的文件操作和网络请求

1、读取文件当中每一行的数据 def main(args: Array[String]): Unit = { //注意文件的编码格式,如果编码格式不对,那么读取报错 val file: BufferedSource = Source.fromFile("F:\\files\\file.txt","GBK"); va...

weixin_30731305的博客 151

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

scala简要:文件访问

scala.io.source对象的getlines方法可以读取文件的所有行,可以把source对象当成迭代器读取文件中的每个字符,java.util.Scanner来处理同事包含文本和数字的文件。 从URL中读取时,需要事先知道编码格式,scala中没有提供读取二进制文件的方法,需要使用Java类库,同样没有内建的对写入文件的支持,可使用java.io.PrintWriter,访问目录也要用java......

我相信...... 3236

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

快学Scala学习笔记及习题解答(9文件和正则)

本文scala使用的版本是2.11.7第九章 文件和正则表达式9.1 文件读取行import scala.io.Sourceval source = Source.fromFile("myfile.txt", "UTF-8)val lineIterator = source.getLines for (l <- lineIterator) println(l)// 也可以对迭代器应用toArray或

梓纾的专栏 774

Scala 文件和正则表达式

注解就是标签。 标签是用来标记某些代码需要特殊处理的。 处理的手段可以在代码运行时操作,也可以在编译期操作。 1.什么可以被注解 1)可以为类,方法,字段局部变量,参数,表达式,类型参数以及各种类型定义添加注解 @Entity class Student @Test def play() {} @BeanProperty var username = _ def doS...

程序员学习圈 1005

12.Scala的I/O和正则表达式

一.I/O 在Scala中,调用Java中的I/O类或者通过对Java中的I/O类进行相应的封装来实现I/O操作。 trait FileLogger extends Logger{ val fileName:String //PrintWriter使用的是java.io.PrintWriter类 val fileOutput=new PrintWriter(fileName:S...

风不止步的博客 228

第十二节 I/O与正则表达式

本节主要内容 Scala I/O操作简介Scala 写文件Scala 读文件Scala 网络I/O正则表达式简介Scala正则表达式实战 1. Scala I/O操作简介 I/O操作是一门编程语言中的重要内容,在Scala中,它更多的是调用Java中的I/O类或者通过对java中的I/O类进行相应的封装来实现I/O操作。在上一节内容中我们已经用到了I/O操作: trait Fi

专注IT 536

Scala入门到精通——第十二节 I/O与正则表达式

本节主要内容 Scala I/O操作简介 Scala 写文件 Scala 读文件 Scala 网络I/O 正则表达式简介 Scala正则表达式实战 1. Scala I/O操作简介 I/O操作是一门编程语言中的重要内容,在Scala中,它更多的是调用java中的I/O类或者通过对java中的I/O类进行相应的封装来实现I/O操作...

weixin_34402090的博客 283

好程序员大数据教程分享Scala系列之文件以及正则表达式

好程序员大数据教程分享Scala系列之文件以及正则表达式 1 读取行 导入scala.io.Source后,即可引用Source中的方法读取文件信息。 importscala.io.SourceobjectFileDemo extendsApp{ valsource = Source.fromFile("C:/Users/admin/res.txt") //返回一个迭代器...

qq_35970166的博客 183

Scala学习(九)文件和正则表达式

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34391854的博客 153

Scala进阶编程指南

Scala进阶编程指南 包和引入 访问权限 文件读写 正则表达式 内部函数 偏函数 闭包

ksh的博客 600
上一篇: Scala的类继承
下一篇: CAP理论与ACID理论
Galen-gao
博客等级 码龄9年 931粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值