我有一个特殊口音的CSV文件,并通过selectUTF-8编码将它保存在记事本中。 当我使用Java读取文件时,它也读取BOM字符。 所以我想用UTF-8格式保存这个文件,而不是最初在记事本中附加BOM。 否则在Java中有没有内置的类,在读取文件中的内容时消除了开始时出现的BOM字符?
我有以下代码片段: public static void foo(Object x) { System.out.println("Obj"); } public static void foo(String x) { System.out.println("Str"); } 如果我调用foo(null)为什么没有含糊之处? 为什么程序调用foo(String x)而不是foo(Object x) ?
我已经在Windows上安装了一个JNA代码来安装键盘钩子(使用JNA的例子)。 代码编译和一切,我得到安装的钩子(我成功处理钩),我也可以卸载钩成功。 但是,当我按下键盘上的任何键时,回叫将永远不会被调用。 这里是我的代码(大部分是从JNA例子中获得的types定义,直接到我的部分去“main”) import com.sun.jna.IntegerType; import com.sun.jna.Pointer; import com.sun.jna.PointerType; import com.sun.jna.Structure; import com.sun.jna.FromNativeContext; import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.PointerByReference; import com.sun.jna.win32.StdCallLibrary; import com.sun.jna.win32.StdCallLibrary.StdCallCallback; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.jna.Library; import com.sun.jna.win32.W32APITypeMapper; import com.sun.jna.win32.W32APIFunctionMapper; import java.util.Map; import java.util.HashMap; public class HelloWorld { static Map UNICODE_OPTIONS = new HashMap() { { put("type-mapper", W32APITypeMapper.UNICODE); put("function-mapper", W32APIFunctionMapper.UNICODE); } }; public […]
以下是一些示例代码: import java.util.Scanner; class In { public static void main (String[]arg) { Scanner in = new Scanner (System.in) ; System.out.println ("how many are invading?") ; int a = in.nextInt() ; System.out.println (a) ; } } 如果我运行程序,并给它一个像4这样的int ,那么一切都很好。 另一方面,如果我回答too many ,不会笑我的笑话。 相反,我得到这个(如预期): Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:819) at java.util.Scanner.next(Scanner.java:1431) at java.util.Scanner.nextInt(Scanner.java:2040) at java.util.Scanner.nextInt(Scanner.java:2000) at […]
TL; DR Matcher API的devise决定是什么? 背景 Matcher有一个我没有想到的行为,我找不到一个好的理由。 API文档说: 一旦创build,一个匹配器就可以用来执行三种不同的匹配操作:[…]这些方法中的每一个都会返回一个表示成功或失败的布尔值。 通过查询匹配器的状态可以获得关于成功匹配的更多信息。 API文档进一步说的是: 匹配器的显式状态最初是未定义的; 在成功匹配之前尝试查询它的任何部分将导致引发IllegalStateException。 例 String s = "foo=23,bar=42"; Pattern p = Pattern.compile("foo=(?<foo>[0-9]*),bar=(?<bar>[0-9]*)"); Matcher matcher = p.matcher(s); System.out.println(matcher.group("foo")); // (1) System.out.println(matcher.group("bar")); 这段代码抛出一个 java.lang.IllegalStateException: No match found 在(1) 。 为了解决这个问题,有必要调用matches()或其他方法,使Matcher进入允许group()的状态。 以下工作: String s = "foo=23,bar=42"; Pattern p = Pattern.compile("foo=(?<foo>[0-9]*),bar=(?<bar>[0-9]*)"); Matcher matcher = p.matcher(s); matcher.matches(); // (2) System.out.println(matcher.group("foo")); System.out.println(matcher.group("bar")); […]
我想通过在网上冲浪创build一个Restful Web服务,我创build了一个,但我得到一个MessageBodyWriter未find媒体types=应用程序/ JSON错误 我的Todo课堂: package com.jersey.jaxb; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import org.pojomatic.Pojomatic; import org.pojomatic.annotations.AutoProperty; @XmlRootElement @XmlType(name = "todo") @XmlAccessorType(XmlAccessType.FIELD) @AutoProperty public class Todo { @XmlElement(name = "summary") private final String summary; @XmlElement(name = "description") private final String description; public String getSummary() { return summary; } public String getDescription() { […]
我有一个JFrame(以及扩展JFrame的类),当我按F5键时,我想要做一个动作。 所以,我让这个类实现了KeyListener。 与此同时,来了三种方法,keyPressed,keyReleased和keyTyped。 我应该用哪种方法来听F5被按下? keyPressed或keyTyped? 我目前有以下,但是当我按F5时它不会打印任何东西。 public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_F5) System.out.println("F5 pressed"); } public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub } public void keyTyped(KeyEvent arg0) { // TODO Auto-generated method stub }
我想要replace最后一个string,是) 假设string是: 插入双(名称,date, 被转换为: 插入双(名称,date)
我正在使用javax.imageio.ImageIO将BufferedImage保存为jpeg文件。 特别是,我创build了以下Java函数: public static void getScreenShot(BufferedImage capture, Path folder, String filename) { try { ImageIO.write(capture, "jpeg", new File(folder.toString()+"/"+filename+".jpg")); } catch (AWTException | IOException ex) { Logger.getLogger(ScreenShotMaker.class.getName()).log(Level.SEVERE, null, ex); } } 同样任何image processing软件,我希望改变jpeg文件的压缩级别。 但是,我正在寻找ImageIO中似乎缺less的这个选项。 我可以设置压缩级别吗?
在Java中,允许以下内容: char c = 'A' + 1; 在这里,c将保持值“B”。 以上,首先评估expression式。 所以'A'被转换为65,整个expression式计算为66,然后66被转换为'B',因为我们将这个值存储在一个char中。 但是,下面给出了一个编译时错误: char c = 'A'; c = c + 1; Java如何以不同的方式查看expression式的解释是什么? 顺便说一下,以下工作也很好: char c = 'A'; c++;