分享

用Java筛选通达信导出的自选股文件,只保留股票代号和名称

2022-02-19  _八月天_

自选股是股民的宝贵财富,要是丢失再重建起来就损失大了,经过几次重装的教训后,我觉得有必要定期将其保存到网站上才保险。

只是用通达信导出的文本文件栏目太多了,比如股价,涨幅,PE等动态的信息用处不大,都可以删除,只保留代号和名称就好,于是我就写了一个程序来完成这件事。程序就是用Java处理简单的文本文件,没什么难度,但确有其用处,希望此程序也对大家有所帮助。

将程序运行起来需要先安装JDK,它的安装请参考:https://www.cnblogs.com/heyang78/p/7429783.html

运行程序的环境是Eclipse,大家可以下载最新的STS()来做这件事。

好了代码如下:

复制代码
package com.hy;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.text.MessageFormat;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Pattern;

/**
 * 本类用于将通达信导出的自选股筛选一下,只保留股票代号和名称
 * @author 何杨
 *
 */
public class StocksFilter {
    public void readFrom(String filePathname) {
        Map<String, String> map = new TreeMap<String, String>();

        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePathname), "GBK"));
            String line = null;
            while ((line = br.readLine()) != null) {
                String[] arr = line.split("\\t+");

                if (isStockCode(arr[0])) {
                    map.put(arr[0], arr[1]);
                }
            }
            
            System.out.println("读取数据行:"+map.size()+"行.");
            
            br.close();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

        PrintWriter out;
        try {
            out = new PrintWriter("C:\\Users\\ufo\\Desktop\\output.txt"); // 这里是写输出文件的位置

            int index = 0;
            for (String code : map.keySet()) {
                index++;
                String name = map.get(code);
                String raw = "{0},{1},{2}";
                Object[] arr = { String.valueOf(index), code, name };
                String sql = MessageFormat.format(raw, arr);
                out.println(sql);
            }

            System.out.println("输出股票:"+index+"个.");
            out.close();

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

    }

    private boolean isStockCode(String str) {
        return Pattern.matches("\\d{6}", str);
    }

    public static void main(String[] args) {
        StocksFilter sr = new StocksFilter();
        
        // 这里读通达信导出文件的位置
        sr.readFrom("C:\\new_tdx\\T0002\\export\\自选股20210206.txt");
    }
}
复制代码

运行效果:

读取数据行:82行.
输出股票:82个.

输出效果:

复制代码
1,000157,中联重科
2,000338,潍柴动力
3,000568,泸州老窖
4,000633,合金投资
5,000733,振华科技
6,000762,西藏矿业
7,000831,五矿稀土
8,000951,中国重汽
9,002008,大族激光
10,002138,顺络电子
11,002142,宁波银行
12,002185,华天科技
13,002258,利尔化学
14,002353,杰瑞股份
15,002377,国创高新
16,002390,信邦制药
17,002415,海康威视
18,002444,巨星科技
19,002460,赣锋锂业
20,002568,百润股份
21,002601,龙蟒佰利
22,002648,卫星石化
23,002759,天际股份
24,002783,凯龙股份
25,002815,崇达技术
26,002840,华统股份
27,002853,皮阿诺
28,002989,中天精装
29,002991,甘源食品
30,003001,中岩大地
31,300059,东方财富
32,300083,创世纪
33,300121,阳谷华泰
34,300122,智飞生物
35,300124,汇川技术
36,300243,瑞丰高材
37,300274,阳光电源
38,300304,云意电气
39,300331,苏大维格
40,300403,汉宇集团
41,300418,昆仑万维
42,300450,先导智能
43,300501,海顺新材
44,300712,永福股份
45,300725,药石科技
46,300750,宁德时代
47,300818,耐普矿机
48,300896,爱美客
49,399102,创业板综
50,600089,特变电工
51,600111,北方稀土
52,600143,金发科技
53,600160,巨化股份
54,600199,金种子酒
55,600276,恒瑞医药
56,600309,万华化学
57,600362,江西铜业
58,600409,三友化工
59,600497,驰宏锌锗
60,600519,贵州茅台
61,600703,三安光电
62,600763,通策医疗
63,600989,宝丰能源
64,601012,隆基股份
65,601058,赛轮轮胎
66,601166,兴业银行
67,601233,桐昆股份
68,601658,邮储银行
69,601877,正泰电器
70,601966,玲珑轮胎
71,601995,中金公司
72,603113,金能科技
73,603127,昭衍新药
74,603195,公牛集团
75,603225,新凤鸣
76,603313,梦百合
77,603486,科沃斯
78,603799,华友钴业
79,603856,东宏股份
80,603899,晨光文具
81,603915,国茂股份
82,605136,丽人丽妆
复制代码

<全文完>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 全屏 打印 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多