首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回压缩文件夹和文件名时C#字符已更改

返回压缩文件夹和文件名时C#字符已更改
EN

Stack Overflow用户
提问于 2016-07-28 21:04:50
回答 1查看 53关注 0票数 0

我正在写一个脚本循环通过一个日期范围,检查是否每个日期是一个有效的交易日,并检查有一个相应的文件夹和文件名为每个日期。

Quantconnect/Lean Githib repo for classes

我遇到的问题是,我的File.Exists(dataFile)方法每次都出现false。原因似乎是存储在formattedFolderName中的文件夹名称正在更改其字符。

目标文件夹本身是压缩的,所以我想知道这是不是问题所在?

目标文件路径:C:\Users\richa_000\Desktop\exporter\forex\fxcm\minute\audjpy\20070401_quote\20070401_audjpy_minute_quote

实际文件路径:C:\Users\richa_000\Desktop\exporter\forex\fxcm\minute\audjpy\20070401_quoAe\20070401_au1jp7_0inuAe_quoAe

我想可能是压缩文件夹,20070401_quote弄乱了这个,但我不确定。

Program.cs

代码语言:javascript
复制
using System;
using System.IO;
using QuantConnect;
using QuantConnect.Securities;
using QuantConnect.Securities.Forex;

namespace TradingDaysFileChecker
{
    class Program
    {
        static void Main(string[] args)
        {
            var startDate = new DateTime(2007, 04, 01);
            var endDate = new DateTime(2016, 07, 25);
            var dataFilePath = @"C:\Users\richa_000\Desktop\exporter\forex\fxcm\minute\";

            var securityType = SecurityType.Forex;
            var ticker = TickType.Trade;
            var marketHoursDatabase = MarketHoursDatabase.FromDataFolder();
            var market = Market.FXCM;
            var symbol = Symbol.Create(ticker.ToString(), securityType, market);
            var marketHoursDbEntry = marketHoursDatabase.GetEntry(symbol.ID.Market, symbol.Value, symbol.ID.SecurityType);

            var exchange = new ForexExchange(marketHoursDbEntry.ExchangeHours);
            var validTradingDays = new DateHandler(startDate, endDate, dataFilePath).IterateOverDateRange(exchange);

            var forexSecuritiesFolders = Directory.GetDirectories(dataFilePath);

                foreach (var validDay in validTradingDays)
                {
                    foreach (var forexSecurity in forexSecuritiesFolders)
                    {
                        var securityName = new DirectoryInfo(forexSecurity).Name.ToString();
                        var formattedFolderName = validDay.ToString("yyyyMMdd_quote");
                        var formattedFileName = validDay.ToString($"yyyyMMdd_{securityName}_minute_quote");

                        var dataFile = dataFilePath + securityName + @"\" + formattedFolderName + @"\" + formattedFileName;

                        if (!File.Exists(dataFile))
                        {
                            Console.WriteLine(dataFile);
                            Console.ReadLine(); // Stopping after the first run while troubleshooting
                        }
                    }
                }
                Console.ReadLine();
        }
    }
}

DateHandler.cs

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using QuantConnect.Securities.Forex;

namespace TradingDaysFileChecker
{
    public class DateHandler
    {
        private DateTime _startDate;
        private DateTime _endDate;

        public DateHandler(DateTime startDate, DateTime endDate, string filePath)
        {
            _startDate = startDate;
            _endDate = endDate;
        }

        public IEnumerable<DateTime> IterateOverDateRange(ForexExchange exchange)
        {
            for (var day = _startDate.Date; day.Date <= _endDate.Date; day = day.AddDays(1))
                if (exchange.IsOpenDuringBar(day.Date, day.Date.AddDays(1), false))
                {
                    yield return day;
                }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-28 21:24:18

好的,这就是从DateTime对象构建格式化名称的方式。当您调用.ToString()时,它会查找特殊的格式化字符,因此您不能在任何文字文本中包含任何字符。您的't‘将转换为A,因为't’是子午线(AM/PM,但单个't‘只表示A或P)的格式字符,而'm’也是如此,它将被替换为DateTime对象的分钟数的一位数。

试试这个:

代码语言:javascript
复制
                var formattedFolderName = validDay.ToString("yyyyMMdd") + "_quote";
                var formattedFileName = validDay.ToString($"yyyyMMdd") + securityName + "_minute_quote";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38637262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档