从C#和.NET 2.2上的控制台程序记录到日志(.txt)的最有效方法是什么?我的程序循环多次总是根据用户的需要输出不同的数据,所以我正在寻找最有效的方法来实现这一点.
我知道我总是可以重新打开一个流然后关闭它,但每次我这样做它只会写一行,然后下一次(几秒钟后)程序重新循环并需要再次写入.在我看来,这似乎并不是非常友好的.
我正在使用多个线程,这些线程都有我要记录的输出数据(打开/关闭同一个文件或在不同的线程上访问同一个文件可能不好)."拥有对自动刷新的流编写器的引用"听起来是个好主意,但我不知道该怎么做.
好的,所以我写了一个程序,利用第三方开源库,我想用我的程序打包在一个罐子里.我正在使用netbeans 6.8,我尝试过的java总是吐出错误:
java.lang.NoClassDefFoundError: libraryname;
Run Code Online (Sandbox Code Playgroud)
关于主题:我也想知道如果可能的话,如何通过netbeans制作可执行jar(exe).(我见过用java编写但是是.exe的程序)
编辑发现了一个名为FatJar的eclipse插件可以做我想要的,但是我找不到类似netbeans的东西,有这样的东西吗?
我试图删除字符串的第一个字符并保留其余部分,我当前的代码没有编译,我很困惑如何解决它.
我的代码:
char * newStr (char * charBuffer)
{
int len = strlen(charBuffer);
int i = 1;
char v;
if(charBuffer[0] == 'A' || charBuffer[0] == 'Q'){
for(i=1;i<len;i++)
v = v + charBuffer[i];
}
v = v + '\0';
return v;
}
Run Code Online (Sandbox Code Playgroud)
Gcc:"警告:返回从没有强制转换的整数生成指针"
另外:"char*newStr(char*charBuffer)"需要保持不变.
我知道GUI有
private void Form1_Closing(object sender, System.ComponentModel.EventArgs e)
{
//do stuff
}Run Code Online (Sandbox Code Playgroud)
但是我如何在控制台应用程序中执行相同的操作?
C#/.NET3.5
我知道setconsolehandler()如果我想管理控制台关闭事件,我必须使用.
我不知道如何阻止CTRL_CLOSE_EVENT.如果它捕获了那个事件,我已经尝试返回false/true,但没有成功
这是我到目前为止(感谢Anton Gogolev!)
[DllImport("Kernel32")]
public static extern bool SetConsoleCtrlHandler(HandlerRoutine Handler, bool Add);
public delegate bool HandlerRoutine(CtrlTypes CtrlType);
public enum CtrlTypes{
CTRL_C_EVENT = 0,
CTRL_BREAK_EVENT,
CTRL_CLOSE_EVENT,
CTRL_LOGOFF_EVENT = 5,
CTRL_SHUTDOWN_EVENT
}
private static bool ConsoleCtrlCheck(CtrlTypes ctrlType)
{
if(ctrlType == CtrlTypes.CTRL_CLOSE_EVENT)
return false;// I have tried true and false and viceversa with the return
// true/false but I cant seem to get it right.
return true;
}
//and then I use this to call it
SetConsoleCtrlHandler(new HandlerRoutine(ConsoleCtrlCheck), …Run Code Online (Sandbox Code Playgroud) 我试图构造一个正则表达式,以匹配字符串的长度是奇数.到目前为止我还没有取得任何成功.
2313432 - 是的
12 - 假
121111111111111 - 是的
谢谢
php页面名为page.php; 这个页面上有2个提交表单:form1和form2.当其中一个表单的提交按钮被按下时,HTML标题中的内容标识了哪个表单已提交?
我正在学习haskell,目前正在尝试从字符串中解析Integers和Floats.
但是,当我在"342"或任何没有单个或多个非数字字符的"数字"上尝试我的readNum函数时,ghci向我报告:
*异常:parse.hs:125:18-46:模式的无可辩驳模式失败(i,(a:as))
data Token
= IntTok Int | FloatTok Float | EOF
readNum :: String->(Token, String)
readNum [] = (EOF, [])
readNum xs = let (i, (a:as)) = span isDigit xs --This is line 125
in (case a of
('.') -> let (j, (b:c:bs)) = span isDigit as
in (if ((toLower b) == 'e' && (c == '+' || c == '-' || (isDigit c)))
then (let (k, d) = span isDigit bs in (FloatTok (read (concat [i,[a],j, …Run Code Online (Sandbox Code Playgroud) 我可以在我的本地计算机上运行服务器并在同一台计算机上连接它,但当我尝试通过Internet从另一台计算机连接到它时,我的服务器上没有活动的迹象,也没有来自服务器的响应在计算机上我正在测试它.我试过XP和Vista,关闭防火墙,打开端口,以管理员身份运行; 什么都没有用.:(
这是我用来接受传入连接的代码:
int port = 3326;
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Any, port));
listener.Start();
Console.WriteLine("Server established\nListening on Port: {0}\n", port);
while (true)
{
socket = listener.AcceptSocket();
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, outime);
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
socket.DontFragment = true;
NewConnection pxy = new NewConnection(socket);
Thread client = new Thread(new ThreadStart(pxy.Start));
client.IsBackground = true;
client.Start();
}
}Run Code Online (Sandbox Code Playgroud) 我目前有这个代码,它将main'对列表中的每个文件名执行该功能files.
理想情况下,我一直试图结合main,main'但我没有取得多大进展.有没有更好的方法来简化这个或我需要将它们分开?
{- Start here -}
main :: IO [()]
main = do
files <- getArgs
mapM main' files
{- Main's helper function -}
main' :: FilePath -> IO ()
main' file = do
contents <- readFile file
case (runParser parser 0 file $ lexer contents) of Left err -> print err
Right xs -> putStr xs
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:正如你们大多数人所暗示的那样; 我为此尝试了一个lambda抽象,但是没有把它弄好. - 应该在上面说明了这一点.通过这些例子,我看得更清楚.
我想取一个包含html字符实体的字符串,如等,并用文字字符串字符替换它们.C#是否带有一个包含所有html字符实体的库,我可以用它来解析/替换字符串中的字符?
HTML字符实体列表:wiki
如何获取当前页面的URL减去所有获取参数(?blah = 2&blah4 = 90 ...)我知道我可以使用$ _SERVER ['REQUEST_URI']获取完整的URL但我想知道是否有更符合我需求的东西.
或者我应该做strpos?和substr to the arguments?(我想,$ _SERVER var会更有效 - 如果存在的话)
谢谢
在我的OSX盒子上工作时,我的perl脚本接受我的参数而没有任何抱怨,在Windows上它没有.
这是我在cmd中做的事情:
G:\perl>toxyz.pl -i "G:\perl\filename.log"
Error: invalid arguments.
G:\perl>
Run Code Online (Sandbox Code Playgroud)
我的perl代码:
#!/usr/bin/perl -w -s
use File::Basename;
$logfile = $ARGV[0];
if(!$logfile || (!$s && !$i)){
print STDERR "Error: invalid arguments.";
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
这在OSX上运行良好.我该怎么办?谢谢.