小编Dav*_*ers的帖子

如何在bash脚本中使用正则表达式否定测试?

使用GNU bash(版本4.0.35(1)-release(x86_64-suse-linux-gnu),我想用正则表达式否定测试.例如,我想有条件地添加PATH变量的路径,如果路径不在那里,如:

TEMP=/mnt/silo/bin
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/Scripts:
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/local/bin
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
export PATH
Run Code Online (Sandbox Code Playgroud)

我确信有一百万种方法可以做到这一点,但我想知道的是,条件是否可以以某种方式被否定,如(错误的):

TEMP=/mnt/silo/bin
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/Scripts:
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/local/bin
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
export PATH
Run Code Online (Sandbox Code Playgroud)

regex bash conditional negate

153
推荐指数
5
解决办法
12万
查看次数

使用HttpClient进行异步文件下载

我有一个服务,它返回一个csv文件到POST请求.我想使用异步技术下载所述文件.虽然我可以获取该文件,但我的代码有几个突出的问题和问题:

1)这真的是异步的吗?

2)有没有办法知道内容的长度,即使它是以分块格式发送的?想想进度吧).

3)我怎样才能最好地监控进度,以便在所有工作完成之前推迟程序退出.

using System;
using System.IO;
using System.Net.Http;

namespace TestHttpClient2
{
    class Program
    {
        /*
         * Use Yahoo portal to access quotes for stocks - perform asynchronous operations.
         */

        static string baseUrl = "http://real-chart.finance.yahoo.com/";
        static string requestUrlFormat = "/table.csv?s={0}&d=0&e=9&f=2015&g=d&a=4&b=5&c=2000&ignore=.csv";

        static void Main(string[] args)
        {
            while (true) 
            {
                Console.Write("Enter a symbol to research or [ENTER] to exit: ");
                string symbol = Console.ReadLine();
                if (string.IsNullOrEmpty(symbol))
                    break;
                DownloadDataForStockAsync(symbol);
            }
        }

        static async void DownloadDataForStockAsync(string symbol)
        {
            try
            {
                using (var client …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous download async-await dotnet-httpclient

7
推荐指数
1
解决办法
2万
查看次数

使用HttpClient进行异步文件下载时的错误检查

当使用HttpClient进行异步文件下载时,此问题是线程问题的后续问题.

要使用HttpClient异步完成文件传输,需要将HttpCompletionOption.ResponseHeadersRead添加到SendAsync请求.因此,当该调用完成时,您将能够通过添加对EnsureSuccessStatusCode的调用来确定所有对请求和响应头的好处.但是,此时数据可能仍在传输.

如何检测在返回标头之后但在数据传输完成之前发生的错误?这些错误会如何表现出来?

下面是一些示例代码,第109行标记的问题点带有注释:"//*****想要在这里做更多的错误检查**"

using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

namespace TestHttpClient2
{
  class Program
  {
    /* Use Yahoo portal to access quotes for stocks - perform asynchronous operations. */

    static string baseUrl = "http://real-chart.finance.yahoo.com/";
    static string requestUrlFormat = "/table.csv?s={0}&d=0&e=1&f=2016&g=d&a=0&b=1&c=1901&ignore=.csv";

    static void Main(string[] args)
    {
      var activeTaskList = new List<Task>();

      string outputDirectory = "StockQuotes";
      if (!Directory.Exists(outputDirectory))
      {
        Directory.CreateDirectory(outputDirectory);
      }

      while (true)
      {
        Console.WriteLine("Enter symbol or [ENTER] to exit:");
        string symbol = …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous async-await dotnet-httpclient

6
推荐指数
1
解决办法
1171
查看次数

使用JSON.NET和NodaTime从JSON反序列化LocalTime导致NodaTime.Text.UnparsableValueException

我有一个问题将时间值反序列化为LocalTime-授予,我对NodaTime很新.我想导入一个Web服务结果,该结果以"HH:mm"格式列出时间.除非我以"hh:mm:ss.fff"格式使用时间,否则我会收到异常.有没有办法指定不同的模式并让"HH:mm"起作用?

请参阅此代码

using System;
using System.Collections.Generic;

using Newtonsoft.Json;
using NodaTime;
using NodaTime.Serialization.JsonNet;
using NodaTime.Text;    // Required for LocalTimePattern
namespace TestNodaTime
{
    class MyObject
    {
        [JsonProperty("var1")]
        public int MyProperty { get; set; }

        [JsonProperty("time")]
        public LocalTime MyTime { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string serializedObject1 = "[{\"var1\":\"42\",\"time\":\"01:02:03.004\"}]";
            string serializedObject2 = "[{\"var1\":\"42\",\"time\":\"01:02\"}]";

            JsonSerializerSettings jss = new JsonSerializerSettings();
            jss.ConfigureForNodaTime(DateTimeZoneProviders.Bcl);

            // This works - the pattern is "hh:mm:ss.fff"
            MyObject mo1 = JsonConvert.DeserializeObject<List<MyObject>>(serializedObject1, jss)[0];

            // This causes an …
Run Code Online (Sandbox Code Playgroud)

c# json json.net deserialization nodatime

6
推荐指数
1
解决办法
762
查看次数

如何在使用Web安装程序与独立安装程序之间进行选择

例如,.Net Framework 4.0可以采用任一格式.是否有任何情况下互联网访问不是考虑因素(始终开启,高带宽),但独立的安装选项是更好的选择?

此外,在使用Web安装程序时,是否有任何特定优势:

1)长期磁盘空间使用情况?2)干净地卸载/修复软件的能力?

installer windows-installer web

4
推荐指数
1
解决办法
7989
查看次数

在C#中,如何复制具有任意编码的文件,逐行读取,而不添加或删除换行符

我需要能够获取具有未知编码的文本文件(例如,UTF-8,UTF-16,...)并逐行复制,随时进行特定更改.在这个例子中,我正在改变编码,但是这种处理还有其他用途.

我无法弄清楚的是如何确定最后一行是否有换行符!有些程序关心具有这些记录的文件之间的区别:

Rec1<newline>
Rec2<newline>
Run Code Online (Sandbox Code Playgroud)

和这些文件:

Rec1<newline>
Rec2
Run Code Online (Sandbox Code Playgroud)

如何区分我的代码以便我采取适当的措施?

using (StreamReader reader = new StreamReader(sourcePath))
using (StreamWriter writer = new StreamWriter(destinationPath, false, outputEncoding))
{
    bool isFirstLine = true;

    while (!reader.EndOfStream)
    {
        string line = reader.ReadLine();

        if (isFirstLine)
        {
            writer.Write(line);
            isFirstLine = false;
        }
        else
        {
            writer.Write("\r\n" + line);
        }
    }


    //if (LastLineHasNewline)
    //{
    //  writer.Write("\n");
    //}

    writer.Flush();
}
Run Code Online (Sandbox Code Playgroud)

注释掉的代码是我想要的,但我无法弄清楚如何设置条件lastInputLineHadNewline!请记住,我没有输入文件编码的先验知识.

c# encoding newline streamreader line-by-line

1
推荐指数
1
解决办法
539
查看次数