我有一个InputStream传递给一个方法做一些处理。 我将在其他方法中使用相同的InputStream,但在第一次处理后,InputStream出现在方法内部。 如何克隆InputStream发送给closures他的方法? 还有另一个解决scheme? 编辑:closuresInputStream的方法是从lib的外部方法。 我没有控制closures或没有。 private String getContent(HttpURLConnection con) { InputStream content = null; String charset = ""; try { content = con.getInputStream(); CloseShieldInputStream csContent = new CloseShieldInputStream(content); charset = getCharset(csContent); return IOUtils.toString(content,charset); } catch (Exception e) { System.out.println("Error downloading page: " + e); return null; } } private String getCharset(InputStream content) { try […]
是否有可能从java.io.File获得一个Path对象? 我知道你可以使用toFile()方法将path转换为文件,但我找不到相反的转换。 有没有办法做到这一点在Java 6或更低?
我看过类似的问题,但还没有find答案。 使用maven编译,我得到: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project api: Fatal error compiling: invalid target release: 1.7 -> [Help 1] 这是pom.xml: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> Javac版本: javac 1.7.0_25 Java版本: java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) […]
我期待 System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8")); 输出: Hello%20World (20是空格的ASCIIhex代码) 但是,我得到的是: Hello+World 我使用错误的方法吗? 什么是我应该使用的正确的方法?
如果一个variables声明为public static varName; ,那么我可以从任何地方访问它作为ClassName.varName 。 我也知道,静态成员是由一个类的所有实例共享,并不是在每个实例重新分配。 声明一个variables为private static varName; 与声明一个variablesprivate varName; ? 在这两种情况下,都不能以ClassName.varNameforms访问,也不能以任何其他类的forms访问ClassInstance.varName 。 将静态variables声明为其他特殊属性吗?
我可以添加stream或额外的元素,如下所示: Stream stream = Stream.concat(stream1, Stream.concat(stream2, Stream.of(element)); 我可以随时添加新的东西,像这样: Stream stream = Stream.concat( Stream.concat( stream1.filter(x -> x!=0), stream2) .filter(x -> x!=1), Stream.of(element)) .filter(x -> x!=2); 但这很丑,因为concat是静态的。 如果concat是一个实例方法,上面的例子会更容易阅读: Stream stream = stream1.concat(stream2).concat(element); 和 Stream stream = stream1 .filter(x -> x!=0) .concat(stream2) .filter(x -> x!=1) .concat(element) .filter(x -> x!=2); 我的问题是: 1) concat是静态的吗? 还是有一些等价的实例方法,我失踪了? 2)无论如何,有没有更好的方法来做到这一点?
在Java中,我有一个像这样的string: " content ". 将String.trim()删除这些方面的所有空间或每个只有一个空间?
Java String的hashCode值计算为( String.hashCode() ): s[0]*31^(n-1) + s[1]*31^(n-2) + … + s[n-1] 有什么情况下(如JVM版本,供应商等)下面的expression式将评估为false? boolean expression = "This is a Java string".hashCode() == 586653468 更新#1:如果你声称答案是“是的,有这样的情况” – 那么请给出一个具体的例子,当“这是一个Javastring”.hashCode()!= 586653468.尝试作为具体/具体尽可能。 更新#2:我们都知道依赖于hashCode()的实现细节通常是不好的。 但是,我正在谈论String.hashCode() – 所以请保持答案集中在String.hashCode()。 在这个问题的背景下,Object.hashCode()是完全不相关的。
我有一个datestring,我想分析它到正常的date使用Java Date API,以下是我的代码: public static void main(String[] args) { String date="2010-10-02T12:23:23Z"; String pattern="yyyy-MM-ddThh:mm:ssZ"; SimpleDateFormat sdf=new SimpleDateFormat(pattern); try { Date d=sdf.parse(date); System.out.println(d.getYear()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 但是我得到一个exception: java.lang.IllegalArgumentException: Illegal pattern character 'T' 所以我想知道如果我不得不拆分string并手动parsing它? 顺便说一句,我试图在T的任何一边添加单引号字符: String pattern="yyyy-MM-dd'T'hh:mm:ssZ"; 这也不起作用。
是否仍然值得将log4j库添加到一个Java 5项目只是为了logging让我们说一些例外,以一些不错的翻转设置的文件。 或者标准的util.logging工具也可以做这个工作吗? 你怎么看?