我有一个java项目,有很多java文件.所以,我想知道.java我的项目在Eclipse中的文件数量.怎么知道?
我想检查传递的文件是否是图像,如果不是,我想显示一条消息,指示该文件不是图像.
try{
Image img = ImageIO.read(new File(name));
}catch(IOException ex)
{
valid=false;
System.out.println("The file" + name + "could not be opened, it is not an image");
}
Run Code Online (Sandbox Code Playgroud)
当文件(引用name)不是图像有效时未设置为false,为什么会发生这种情况?我应该更改例外的类型吗?我已经阅读了关于try-catch的内容,据我所知,如果ImageIO.read失败并且异常的类型是IOException,将执行catch块的内容.那为什么不执行呢?
有没有其他方法来检查文件是否是图像?
假设Java有两种套接字:
想象一下两个过程的情况:
X =客户
Y =服务器
服务器进程Y:有一个"ServerSocket",即正在侦听TCP端口
客户端进程X:通过"Socket"向Y发送连接请求.
Y:然后该accept()方法返回一个新的客户端类型"Socket",
当它发生时,两个套接字得到"互连",
所以:客户端进程中的套接字,与服务器进程中的套接字相连.
然后:通过套接字X读/写就像通过套接字Y读/写.
现在,两个客户端套接字互连!!
但是......
如果我在同一个进程中创建两个Client套接字,我想让它们"互连"怎么办?
......甚至可能?
假设如何在不使用中间ServerSocket的情况下使两个客户端套接字互连?
我已经通过创建两个Thread来连续读取A和写B来解决它,而另一个用于读取B和写入A ......
但我认为这可能是更好的方式......(那些世界耗能的线程不是必需的使用客户端 - 服务器方法)
任何帮助或建议将不胜感激!谢谢
编辑:
应用示例:"现有服务器应用程序可以转换为客户端应用程序",例如VNC服务器,一个客户端套接字连接到VNC服务器,并创建其他客户端套接字(连接到中间服务器),然后应用程序互连两个客户端导致VNC服务器是客户端应用程序!然后,不需要公共IP.
VNCServer --- MyApp ---> |中间服务器| <---用户
我将首先说我知道不可能阻止您的软件进行逆向工程.
但是,当我看一下crackmes.de时,有一个难度等级为8和9的裂缝(在1到10的等级上).这些裂缝正在被天才大脑破解,他们写了一篇如何破解它的教程.有时,这样的教程长达13页!
当我试图制作一个crackme时,他们会在10分钟内破解它.接下来是一个长度为20行的"如何破解"教程.
所以问题是:
假设我们有以下代码:
File file = new File("zip1.zip");
ZipInputStream zis = new ZipInputStream(new FileInputStream(file));
Run Code Online (Sandbox Code Playgroud)
假设您有一个包含以下内容的.zip文件:
zis.getNextEntry()将如何迭代?
它会返回hello.c,world.java,folder1,foobar.c并完全忽略folder1中的文件吗?
或者它会返回hello.c,world.java,folder1,foo.c,bar.java,然后是foobar.c?
它甚至会返回folder1,因为它在技术上是一个文件夹而不是文件?
谢谢!
java.util.HashMap有一个put方法的实现,其中包含以下代码:
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,为什么不首先进行引用检查(因为具有相同引用的两个对象将具有相同的哈希和equals())?
即是这样的:
if ((k = e.key) == key) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
} else if ( compare hash and equals) {
// do something again with the value
}
Run Code Online (Sandbox Code Playgroud)
这不会节省比较吗?
在POSIX OS下,有一个信号API,它允许发送一个信号进行处理以使用kill来关闭它,你可以用sigaction捕获它并做你需要的事情;
但是,Win32不是POSIX系统,因此:
我不是在谈论GUI,我在谈论应该很好地关闭的TCP/IP服务器.这不像Windows服务那样运行.
我正在尝试将包含某些URL的String替换为与浏览器兼容的链接URL.
我的初始String看起来像这样:
"hello, i'm some text with an url like http://www.the-url.com/ and I need to have an hypertext link !"
Run Code Online (Sandbox Code Playgroud)
我想得到的是一个字符串看起来像:
"hello, i'm some text with an url like <a href="http://www.the-url.com/">http://www.the-url.com/</a> and I need to have an hypertext link !"
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码行捕获URL:
String withUrlString = myString.replaceAll(".*://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"null\">HereWasAnURL</a>");
Run Code Online (Sandbox Code Playgroud)
也许regexp表达式需要一些修正,但它工作正常,需要在更长的时间内进行测试.
所以问题是如何保持正则表达式捕获的表达式,只需添加创建链接所需的内容:catched string
提前感谢您的关注和回复!
我的Java SWT桌面应用程序与它自己的Java运行时一起分发,我想让下载大小尽可能小.我想从rt.jar中删除我不使用的所有类,但根据JDK运行时许可证这是禁止的(请参阅根JDK文件夹中的README.html文件).
由于Java是开源的,我是否允许从源代码编译我自己的"Java"运行时没有这种分发限制?如果是这样,有没有人这样做过?(或者你只是忽略JDK许可条款?)
我想拆分以下字符串"Good ^ Evening"我使用拆分选项它不拆分值.请帮我.
这就是我一直在尝试的:
String Val = "Good^Evening";
String[] valArray = Val.Split("^");
Run Code Online (Sandbox Code Playgroud)