在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#文件解析和处理 → C# 软件著作权源码整理工具 源码下载

C# 软件著作权源码整理工具 源码下载

C#文件解析和处理

下载此实例
  • 开发语言:C#
  • 实例大小:0.02M
  • 下载次数:78
  • 浏览次数:2340
  • 发布时间:2017-01-12
  • 实例类别:C#文件解析和处理
  • 发 布 人:boiciy
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 源码 工具

实例介绍

【实例简介】

软件著作权申请时,需要准备前30页后30页网页源代码。

通过这个软件,直接自动将注释和空行都删除,并且合并成差不多30多页的源代码。

【实例截图】

【核心代码】


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace SourceConvert
{
    public partial class Form1 : Form
    {
        int linecount = 0;
        List<string> lexts = new List<string>();
        List<string> files = new List<string>();
        List<string> txtlines = new List<string>();
        public Form1()
        {
            InitializeComponent();
        }
        private void fileSort()
        {
            Random random = new Random();
            List<string> newList = new List<string>();
            foreach (string item in files)
            {
                newList.Insert(random.Next(newList.Count), item);
            }
            files = newList;
        }

        private void btn_submit_Click(object sender, EventArgs e)
        {
            if (linecount > 4000)
            {
                linkLabel1_LinkClicked(linkLabel1, null);
            }

            File.WriteAllText(Application.StartupPath   "/SC_Path.txt", txt_path.Text, Encoding.UTF8);

            string[] exts = txt_ext.Text.Split(';');
            string tmpstr;
            int ind, ind2;
            lexts.Clear();
            files.Clear();
            foreach (string ext in exts)
            {
                tmpstr = ext.Trim();
                if(tmpstr.StartsWith("*."))
                    lexts.Add(tmpstr.Substring(2).ToLower());
            }
            if (lexts.Count == 0)
            {
                MessageBox.Show("扩展名没有设置");
                return;
            }
            string[] paths = txt_path.Lines;
            btn_submit.Enabled = false;
            try
            {
                foreach(string path in paths)
                    dirrun(path);
                fileSort();
                foreach (string file in files)
                {
                    //rtb_source.AppendText(file   Environment.NewLine   Environment.NewLine   Environment.NewLine   Environment.NewLine   Environment.NewLine);
                    ind = file.LastIndexOf('.');
                    if (ind == -1)
                        continue;
                    tmpstr = file.Substring(ind   1).ToLower();

                    if (lexts.Contains(tmpstr))
                    {
                        Encoding encode = TxtFileEncoding.getencode_percent(File.ReadAllBytes(file));
                        string[] lines = File.ReadAllLines(file, encode);
                        bool bst = false;
                        foreach (string line in lines)
                        {
                            string linen = line;
                            if (bst)//前面遇到了/*
                            {
                                ind2 = linen.IndexOf("*/");
                                if (ind2 == -1)
                                    continue;
                                else
                                {
                                    linen = linen.Substring(ind2   2);
                                    bst = false;
                                }
                            }
                            else
                            {
                                ind = linen.IndexOf("/*");
                                if (ind > -1)
                                {
                                    ind2 = linen.IndexOf("*/", ind);
                                    if (ind2 > 0)
                                    {
                                        linen = linen.Remove(ind, ind2 - ind   2);
                                    }
                                    else
                                    {
                                        linen = linen.Remove(ind);
                                        bst = true;
                                    }
                                }
                            }
                            ind = linen.IndexOf("//");
                            if (ind > -1)
                                linen = linen.Remove(ind);
                            tmpstr = linen.Trim();
                            if (tmpstr == "")
                                continue;
                            txtlines.Add(linen);
                            linecount  ;
                        }
                    }
                    Application.DoEvents();
                    if (linecount > 4000)
                        break;
                }
                if (txtlines.Count > 3000)
                {
                    txtlines.RemoveRange(30 * 50, txtlines.Count - 60 * 50);
                }
                rtb_source.Lines = txtlines.ToArray();
            }
            catch (Exception ex)
            {
                MessageBox.Show("运行错误:"   ex.Message);
                return;
            }
            finally
            {
                btn_submit.Enabled = true;
            }
            int page = (int)Math.Ceiling(linecount * 1.0 / 50);
            lab_msg.Text = linecount   "行,"   page   "页";
        }
        private void dirrun(string path)
        {
            if (path.Trim() == "")
                return;
            if(!Directory.Exists(path))
                return;
            files.AddRange(Directory.GetFiles(path));

            string[] dirs = Directory.GetDirectories(path);
            foreach (string dir in dirs)
            {
                dirrun(dir);
            }
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            linecount = 0;
            rtb_source.Clear();
            txtlines.Clear();
            lab_msg.Text = "";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (File.Exists(Application.StartupPath   "/SC_Path.txt"))
                txt_path.Text = File.ReadAllText(Application.StartupPath   "/SC_Path.txt", Encoding.UTF8);
        }
    }
    public class TxtFileEncoding
    {
        public static Encoding getencode_percent(byte[] lb)
        {
            try
            {
                if (is_utf8_code(lb))
                    return Encoding.UTF8;
                if (is_gb2312_code(lb))
                    return Encoding.GetEncoding("gb2312");
                if (is_big5_code(lb))
                    return Encoding.GetEncoding("big5");
                if (is_gbk_code(lb))
                    return Encoding.GetEncoding("gbk");
            }
            catch (Exception ex)
            {
            }
            return Encoding.ASCII;
        }
        public static bool is_utf8_special_byte(byte c)
        {
            byte special_byte = 0X02; //binary 00000010    
            if (c >> 6 == special_byte)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public static bool is_utf8_code(byte[] byts)
        {
            byte one_byte = 0X00; //binary 00000000
            byte two_byte = 0X06; //binary 00000110
            byte three_byte = 0X0E; //binary 00001110  
            byte four_byte = 0X1E; //binary 00011110
            byte five_byte = 0X3E; //binary 00111110
            byte six_byte = 0X7E; //binary 01111110

            int utf8_yes = 0;
            int utf8_no = 0;

            byte k = 0;
            byte m = 0;
            byte n = 0;
            byte p = 0;
            byte q = 0;

            byte c = 0;
            for (int i = 0; i < byts.Length; )
            {
                c = byts[i];
                if (c >> 7 == one_byte)
                {
                    i  ;
                    continue;
                }
                else if (c >> 5 == two_byte)
                {
                    k = byts[i   1];
                    if (is_utf8_special_byte(k))
                    {
                        utf8_yes  ;
                        i  = 2;
                        continue;
                    }
                }
                else if (c >> 4 == three_byte)
                {
                    m = byts[i   1];
                    n = byts[i   2];
                    if (is_utf8_special_byte(m)
                            && is_utf8_special_byte(n))
                    {
                        utf8_yes  ;
                        i  = 3;
                        continue;
                    }
                }
                else if (c >> 3 == four_byte)
                {
                    k = byts[i   1];
                    m = byts[i   2];
                    n = byts[i   3];
                    if (is_utf8_special_byte(k)
                            && is_utf8_special_byte(m)
                            && is_utf8_special_byte(n))
                    {
                        utf8_yes  ;
                        i  = 4;
                        continue;
                    }
                }
                else if (c >> 2 == five_byte)
                {
                    k = byts[i   1];
                    m = byts[i   2];
                    n = byts[i   3];
                    p = byts[i   4];
                    if (is_utf8_special_byte(k)
                            && is_utf8_special_byte(m)
                            && is_utf8_special_byte(n)
                            && is_utf8_special_byte(p))
                    {
                        utf8_yes  ;
                        i  = 5;
                        continue;
                    }
                }
                else if (c >> 1 == six_byte)
                {
                    k = byts[i   1];
                    m = byts[i   2];
                    n = byts[i   3];
                    p = byts[i   4];
                    q = byts[i   5];
                    if (is_utf8_special_byte(k)
                            && is_utf8_special_byte(m)
                            && is_utf8_special_byte(n)
                            && is_utf8_special_byte(p)
                            && is_utf8_special_byte(q))
                    {
                        utf8_yes  ;
                        i  = 6;
                        continue;
                    }
                }

                utf8_no  ;
                i  ;
            }
            if (utf8_yes   utf8_no == 0)
                return false;
            int ret = (100 * utf8_yes) / (utf8_yes   utf8_no);
            if (ret > 90)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public static bool is_gb2312_code(byte[] byts)
        {
            byte one_byte = 0X00; //binary 00000000

            int gb2312_yes = 0;
            int gb2312_no = 0;

            byte k = 0;

            byte c = 0;
            for (int i = 0; i < byts.Length; )
            {
                c = byts[i];
                if (c >> 7 == one_byte)
                {
                    i  ;
                    continue;
                }
                else if (c >= 0XA1 && c <= 0XF7)
                {
                    k = byts[i   1];
                    if (k >= 0XA1 && k <= 0XFE)
                    {
                        gb2312_yes  ;
                        i  = 2;
                        continue;
                    }
                }

                gb2312_no  ;
                i  = 2;
            }
            if (gb2312_yes   gb2312_no == 0)
                return false;
            int ret = (100 * gb2312_yes) / (gb2312_yes   gb2312_no);
            if (ret > 90)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public static bool is_big5_code(byte[] byts)
        {
            byte one_byte = 0X00; //binary 00000000

            int big5_yes = 0;
            int big5_no = 0;

            byte k = 0;

            byte c = 0;
            for (int i = 0; i < byts.Length; )
            {
                c = byts[i];
                if (c >> 7 == one_byte)
                {
                    i  ;
                    continue;
                }
                else if (c >= 0XA1 && c <= 0XF9)
                {
                    k = byts[i   1];
                    if (k >= 0X40 && k <= 0X7E
                            || k >= 0XA1 && k <= 0XFE)
                    {
                        big5_yes  ;
                        i  = 2;
                        continue;
                    }
                }

                big5_no  ;
                i  = 2;
            }

            if (big5_yes   big5_no == 0)
                return false;
            int ret = (100 * big5_yes) / (big5_yes   big5_no);
            if (ret > 90)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public static bool is_gbk_code(byte[] byts)
        {
            byte one_byte = 0X00; //binary 00000000

            int gbk_yes = 0;
            int gbk_no = 0;

            byte k = 0;

            byte c = 0;
            for (int i = 0; i < byts.Length; )
            {
                c = byts[i];
                if (c >> 7 == one_byte)
                {
                    i  ;
                    continue;
                }
                else if (c >= 0X81 && c <= 0XFE)
                {
                    k = byts[i   1];
                    if (k >= 0X40 && k <= 0XFE)
                    {
                        gbk_yes  ;
                        i  = 2;
                        continue;
                    }
                }

                gbk_no  ;
                i  = 2;
            }

            if (gbk_yes   gbk_no == 0)
                return false;
            int ret = (100 * gbk_yes) / (gbk_yes   gbk_no);
            if (ret > 90)
                return true;
            else
                return false;
        }
    }

}



标签: 源码 工具

实例下载地址

C# 软件著作权源码整理工具 源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警