读取txt内容放入set中

本文介绍了一个使用Java从TXT文件中读取数据并将其存储到Set集合中的方法。通过利用BufferedReader和InputStreamReader,该过程可以有效避免重复数据,并确保数据的正确编码。文章详细展示了如何处理文件流,读取文件内容,并将每行数据添加到HashSet中,最后遍历并打印Set集合中的所有元素。
 1 package pingbi;
 2 
 3 /**
 4  * 将txt文本读入导入到set中
 5  * 问题:
 6  * 第一个地方有会多一个 ?--解决问题很简单,但不知道问题的原因
 7  */
 8 import java.io.BufferedReader;
 9 import java.io.File;
10 import java.io.FileInputStream;
11 import java.io.InputStreamReader;
12 import java.util.HashSet;
13 import java.util.Iterator;
14 import java.util.Set;
15 
16 public class MyTest {
17     // private static String ENCODING = "gbk";
18     private static String ENCODING = "UTF-8";
19     
20     public static void main(String[] args) throws Exception {
21         Set<String> set = readKeyWord();
22 
23         Iterator<String> it = set.iterator();
24         while (it.hasNext()) {
25             String str = it.next();
26             System.out.println(str);
27         }
28         System.out.println(set.size());
29     }
30 
31     public static Set<String> readKeyWord() throws Exception {
32         Set<String> set = null;
33         
34         String filepath = "E:\\pingbi\\key.txt";
35         File file = new File(filepath); // 读取文件
36         //String filename = "key.txt";
37         
38         InputStreamReader read = new InputStreamReader(new FileInputStream(filepath), ENCODING);
39         try {
40             if (file.isFile() && file.exists()) {// 文件流是否存在
41                 set = new HashSet<String>();
42                 BufferedReader bufferedReader = new BufferedReader(read);
43                 String txt;
44                 while ((txt = bufferedReader.readLine()) != null) {//读取文件,将文件内容放入到set中
45                     set.add(txt);
46                 }
47             } else {//不存在抛出异常信息
48                 throw new Exception("敏感词库文件不存在");
49             }
50         } catch (Exception e) {
51             throw e;
52         } finally {
53             read.close();//关闭文件流
54         }
55         return set;
56     }
57 }

 

转载于:https://www.cnblogs.com/dayuruozhi/p/6595794.html

在STM32嵌入式系统中,使用HAL库配置GPIO中断并在中断服务程序中读取GPIO引脚状态的过程主要包括以下步骤: ### 配置GPIO为外部中断模式 首先需要将指定的GPIO配置为输入模式,并启用外部中断功能。以按键为例,可以参考如下代码片段: ```c void key_init(void) { GPIO_InitTypeDef gpio_init_struct; __HAL_RCC_GPIOB_CLK_ENABLE(); // 使能GPIOB时钟 gpio_init_struct.Pin = GPIO_PIN_6; // 指定引脚 gpio_init_struct.Mode = GPIO_MODE_IT_FALLING; // 设置为下降沿触发中断 gpio_init_struct.Pull = GPIO_PULLUP; // 上拉电阻 gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; // 高速模式 HAL_GPIO_Init(GPIOB, &gpio_init_struct); // 初始化GPIOB引脚 } ``` ### 启用NVIC中断控制器 为了响应外部中断事件,还需要配置NVIC(Nested Vectored Interrupt Controller)来启用相应的中断线。对于GPIO中断,通常使用的是EXTI(External Interrupt/Event Controller)模块。 ```c // 在main函数中启用NVIC中断 HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0); // 设置优先级 HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); // 使能中断线 ``` ### 编写中断服务程序 当外部中断发生时,会跳转到对应的中断服务程序(ISR)。在这个函数中,可以通过调用`HAL_GPIO_ReadPin()`函数来读取特定GPIO引脚的状态[^3]。 ```c void EXTI9_5_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6); // 调用通用处理函数 } // 用户定义的回调函数 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == GPIO_PIN_6) { // 判断是否是预期的引脚 uint8_t pin_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6); // 读取当前状态 // 可以在此处添加其他逻辑处理代码 } } ``` ### 注意事项 - **去抖动**:实际应用中,机械开关可能会产生抖动现象,因此建议在软件或硬件层面采取措施消除抖动。 - **引脚选择**:确保所选GPIO引脚支持外部中断功能,某些引脚可能不具备此能力[^4]。 - **中断优先级**:合理设置中断优先级,避免与其他中断冲突导致系统不稳定。 通过上述方法,可以在STM32平台上利用HAL库实现GPIO中断的配置以及在中断服务程序中准确读取GPIO引脚的状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值