我有一个存储在java jar文件中的UTF-8文件.我试图使用getResourceAsStream()方法读取它,但函数返回的输入流读取器使用默认编码,即Windows下的ANSI编码.
如何从jar中读取UTF-8文本文件?
我使用InputStreamReader传输压缩图像。InflaterInputStream用于解压缩图像
InputStreamReader infis =
new InputStreamReader(
new InflaterInputStream( download.getInputStream()), "UTF8" );
do {
buffer.append(" ");
buffer.append(infis.read());
} while((byte)buffer.charAt(buffer.length()-1) != -1);
Run Code Online (Sandbox Code Playgroud)
但是所有非拉丁字符都变为“?” 并且图像损坏了http://s019.radikal.ru/i602/1205/7c/9df90800fba5.gif
通过传输未压缩的图像,我使用了BufferedReader,并且一切正常
BufferedReader is =
new BufferedReader(
new InputStreamReader( download.getInputStream()));
Run Code Online (Sandbox Code Playgroud) 我想知道BufferedReader的工作原理吗?为什么使用InputStreamReader?它与Scanner类有何不同,后者也用于输入用户?哪两个更好?
在Java中,我使用标准Scanner和BufferedReader类进行输入,例如:
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
Run Code Online (Sandbox Code Playgroud)
或者
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int a=Integer.parseInt(br.readLine());
Run Code Online (Sandbox Code Playgroud)
但是像这样获取输入需要大量的运行时间。我想知道更快的获取输入的方法。提前致谢
编辑:我见过像 uwi 这样的顶级 java 程序员,他们以非常不同的方式接受输入。他们有点创建自己的读者类别。我不明白他们的程序如何在运行时变得更快。
一直在努力解决这个问题。长话短说,它不读最后一行的my input。
我想要它做什么...读取文件并退出。
就是这样。它的工作原理上的罚款file ( example: .txt ),但是当涉及到System.in,代码并没有工作!烦人,当它应该很容易。
这是要重新创建的代码和照片!
StringBuilder strBuilder = new StringBuilder();
String line;
// for the last line to "end", I have to do \n! ... but how...?
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while((line = br.readLine()) != null) {
System.out.println(line);
strBuilder.append(line);
}
// Does not reach code
System.out.println(strBuilder.toString());
Run Code Online (Sandbox Code Playgroud)
我知道readLine()在终止\n或\r...在这种情况下,4 fourth line确实不具备后换行,所以我尝试使用!br.isEmpty()或!br.isBlank …