我想ping一个目标IP地址并收到响应.为了实现这一点,我在Java中使用了带有runtime.exec方法和进程类的Windows命令行.我正在使用inputStreamReader获取响应.
我的默认字符集是windows-1254,它是土耳其语.当我收到它时,响应包含土耳其语字符,但在控制台中没有正确显示土耳其语字符.
我想从我得到的响应中获取一个数值,但我搜索的值包含一些土耳其字符,所以当我查找它时,我找不到它.
代码如下,我需要知道的是如何在这里看到土耳其字符:
runtime = Runtime.getRuntime();
process = runtime.exec(pingCommand);
BufferedReader bReader = new BufferedReader(
new InputStreamReader(process.getInputStream(), "UTF8"));
String inputLine;
while ((inputLine = bReader.readLine()) != null) {
pingResult += inputLine;
}
bReader.close();
process.destroy();
System.out.println(pingResult);
Run Code Online (Sandbox Code Playgroud) 这是我的问题:正常的 while 循环看起来像这样 -
while(condition){statements}
Run Code Online (Sandbox Code Playgroud)
and 语句执行直到条件变为false并且循环结束。我对这种陈述的逻辑感兴趣:
while((a=b.readLine) != null) { ... }
Run Code Online (Sandbox Code Playgroud)
就我而言,它用于客户端 - 服务器通信。条件有时为真,有时为真,但循环看起来像是在永远测试条件,当为真时,{}执行语句。在我看来,循环等待条件为真,然后运行语句。它是否以某种方式与方式BufferedReader和InputStreamReader工作或什么有关?此外,这个循环似乎永远不会结束,它只是等待条件成立true,然后运行语句,然后再次等待条件成立true,等等。我将感谢您的任何澄清。
我正在使用以下代码读取大文件:
InputStreamReader isr = new InputStreamReader(new FileInputStream(FilePath));
BufferedReader br = new BufferedReader(isr);
while ((cur = br.readLine()) != null)
Run Code Online (Sandbox Code Playgroud)
我可以使用上述代码读取大文件,但我想知道这些读取器在内存中的内部工作方式。inputstreamreader扮演什么角色?逐行读取文件(例如2 GB)时分配了多少块内存?
嗨,我想阅读包含使用java的德语字符的网页内容,遗憾的是,德语字符显示为奇怪的字符.任何帮助请在这里是我的代码:
String link = "some german link";
URL url = new URL(link);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
Run Code Online (Sandbox Code Playgroud) 我是java新手,我一直在尝试解决一个问题,我觉得答案可能比我的代码更简单.问题是打印任意长度的用户输入名称的首字母以及完整的姓氏.但这有没有任何String.split()或arrays.I尝试让用户一次输入一个单词,但有没有可能的方法立即获取整个名称并按要求执行.我的代码如下:
import java.io.*;
public class Initials {
public static void main(String[]args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the number of words your name contains");
int n=Integer.parseInt(br.readLine());
String str="";
for(int x=1;x<=n-1;x++){
System.out.println("Enter your name's word number:"+" "+x);
String s=br.readLine();
String st=s.toUpperCase();
char ch=st.charAt(0);
str=str+ch+".";
}
System.out.println("Enter your surname");
String sur=br.readLine();
str=str+" "+sur.toUpperCase();
System.out.println(str);
}
}
Run Code Online (Sandbox Code Playgroud) 我们都知道,关闭我们在代码末尾定义的所有 StreamReader 是一个好习惯。
现在我们可以看到两个 Reader 的定义如下。BufferedReader 和InputStreamReader。BufferedReader 已关闭,但我们无法关闭InputStreamReader。
JAVA代码:
BufferedReader in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
if (in != null) {
in.close();
}
Run Code Online (Sandbox Code Playgroud)
问题来了,括号里的InputStreamReader是否应该关闭呢?这样的代码会不会给程序带来一些问题呢?请告诉我,谢谢~
将InputStream作为来自某个地方,在那里将被进一步处理,然后关闭的参数传递。所以我不想在InputStream这里关闭。考虑以下代码:
void readInputStream(final InputStream inputStream) {
final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = bufferedReader.readLine() != null) {
// do my thing
}
}
Run Code Online (Sandbox Code Playgroud)
根据另一个Stackoverflow帖子,如果我关闭BufferedReaderand和/或the InputStreamReader,那么底层InputStream也将被关闭。
我的问题:即使底层InputStream在其他地方关闭,读者也需要关闭吗?如果不关闭阅读器,是否会发生内存泄漏?
java memory memory-management bufferedreader inputstreamreader
我的问题很简单:
new InputStreamReader(is, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
使β和·看起来像问号.
我应该使用哪个编码器来正确查看这些字符?
我试图使用BufferedReader从输入中读取a.它第一次工作,但第二次运行我得到一个例外.
john@fekete:~/devel/java/pricecalc$ java frontend.CUI
> gsdfgd
Invalid command!
> I/O Error getting string: java.io.IOException: Stream closed
I/O Error: java.io.IOException: java.io.IOException: Stream closed
> I/O Error getting string: java.io.IOException: Stream closed
I/O Error: java.io.IOException: java.io.IOException: Stream closed
> I/O Error getting string: java.io.IOException: Stream closed
Run Code Online (Sandbox Code Playgroud)
它只是在循环中继续运行.我一定错过了什么.
public static void main(String args[]) {
if (args.length == 0) {
while (!exit) {
try {
exit = processLine(commandLine());
} catch (IOException e) {
System.out.println("I/O Error: " + e);
}
}
System.out.println("Bye!");
} else if …Run Code Online (Sandbox Code Playgroud) 我似乎无法得到底部"我"链接到下面的for循环中的变量我哪里出错?我试图编辑它更改变量并将变量放在for循环上面所有我得到的是错误
我也在使用eclipse luna
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class AssignmentProgramming {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("Please enter a string");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String data = reader.readLine();
char ch =(char) System.in.read();
int letters=0;
for(int i=0; i<data.length(); i++);
{
char c=data.charAt(i);//<-- This i here
if (c==ch);
{letters++;
}
}
System.out.println(letters);
}
}
Run Code Online (Sandbox Code Playgroud) java ×10
inputstream ×2
encoding ×1
input ×1
memory ×1
readline ×1
string ×1
variables ×1
while-loop ×1