使用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) 我有一个服务,它返回一个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) 当使用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) 我有一个问题将时间值反序列化为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) 例如,.Net Framework 4.0可以采用任一格式.是否有任何情况下互联网访问不是考虑因素(始终开启,高带宽),但独立的安装选项是更好的选择?
此外,在使用Web安装程序时,是否有任何特定优势:
1)长期磁盘空间使用情况?2)干净地卸载/修复软件的能力?
我需要能够获取具有未知编码的文本文件(例如,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# ×4
async-await ×2
asynchronous ×2
.net ×1
bash ×1
conditional ×1
download ×1
encoding ×1
installer ×1
json ×1
json.net ×1
line-by-line ×1
negate ×1
newline ×1
nodatime ×1
regex ×1
streamreader ×1
web ×1