在标准输入的一行中,我有 3 种类型的整数:第一个整数是 id,第二个整数是 N - 某个数字,之后是 N 个整数,用一个空格分隔,我想将其存储在数组或 ArrayList 中。我如何使用 BufferedReader 来做到这一点?我有以下代码:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] line = br.readLine().split(" ");
int ID = Integer.parseInt(line[0]);
int N = Integer.parseInt(line[1]);
Run Code Online (Sandbox Code Playgroud)
我的问题是有什么优雅的方法来读取该行的其余部分并将其存储到数组中吗?
我在 Java 中遇到以下问题:我正在开发和应用程序使用java.net.Socket. 它看起来像这样:有一个服务器,它有一个线程,它接受并添加新客户端,另一个线程从套接字读取数据并用它做“某事”。旁边是客户。客户端具有数据读取器线程以及单独的线程。我发送的数据很简单:
socket.getOutputStream().write((content+"\n").getBytes());
Run Code Online (Sandbox Code Playgroud)
在客户端并在服务器上读取它,例如:
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String received;
while(true) {
try {
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
received = reader.readLine();
if(received == null) {
break;
}
System.out.println("SERVER " + received);
increaseReceivedCounter(1);
} catch(SocketException e) {
break;
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println("SERVER RECEIVED "+ getReceivedCounter() + " MESSAGES!");
}
Run Code Online (Sandbox Code Playgroud)
现在我只是设置客户端发送一些这样的消息:
try {
int n = 1000;
System.out.println("sending "+ …Run Code Online (Sandbox Code Playgroud) BufferedReader'sreadline()读取由 '\n' 定义的行,是否可以读取由其他分隔符定义的行,例如^B?谢谢
我有这个函数遍历一个目录,应该读入每个文件并将其写入生成的HTML文件.BufferedReader应该正确读取,因为我在其他地方使用相同的东西.但是,在生成的HTML文件中,我只从目录中的原始文件获取所有其他数据行.这是应该完成此任务的方法:
// Tests to see if "File" is actually a directory or file,
// then writes out the file if it passes the test
void writeFiles(File directory, BufferedWriter bw) {
try{
for( File file : directory.listFiles() ){
if(!file.isDirectory()) {//is a file lets read it
FileInputStream filestream = new FileInputStream(file);
DataInputStream in = new DataInputStream(filestream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String buff = new String();
bw.write("<b>////////////////////////////////</b><br/>");
bw.write("<b>File: " + file.getName() + "</b><br/>");
bw.write("<b>////////////////////////////////</b><br/>");
while((buff=br.readLine()) != null){
bw.write(br.readLine() + "<br/>");
} …Run Code Online (Sandbox Code Playgroud) 目前我正在尝试从内容长度为37743的响应中读取一个不那么短的流.我使用read(char []缓冲区,int offset,int length),但是在将它与原来的json文件我正在读.我试图检查这是否是一个常见的问题,但我找不到任何可能导致问题的原因:
while ((reader.read(buffer, 0, buffer.length)) != -1)
sb.append(String.valueOf(buffer)); //sb is the String builder
Run Code Online (Sandbox Code Playgroud)
注意当缓冲区长度被改变,结果再次改变,例如,当改为1024,与8192缓冲达到加上又是一段文字,这是不符合原来的JSON字符串一致得到相同的结果.
我需要使用Java从文件加载字节.这是正确的吗 ?
InputStream ips=new FileInputStream(file);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);
String line;
String cle = "" ;
while ((line=br.readLine())!=null){
cle+=line
}
---> cle.getBytes()
Run Code Online (Sandbox Code Playgroud) 我目前正在编写一个方法来测试输入字符串(密码)是否包含字典的一部分.字典是一个简单的txt文件,每行一个字.我现在想检查字典的每一行,如果它包含在输入字符串中.下面的代码对我有用:
public boolean dictionaryCheck(String pLine)
{
BufferedReader myReader;
String currentLine;
try
{
myReader = new BufferedReader(new FileReader("dict.txt"));
while(myReader.readLine() != null)
{
currentLine = myReader.readLine();
if(pLine.contains(currentLine))
{
return false;
}
}
}
catch (Exception e){System.out.println("Error: " + e);}
return true;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用任何参数String运行该方法时,我收到以下错误:
Error: java.lang.NullPointerException
所以我假设BufferedReader没有正确初始化.
有关如何解决此问题的任何建议?代码对我来说似乎很好,但我可能会忽略一个错误.
提前致谢,
乔库克
从文件中读取输入的最有效方法是什么?
我有一个非常大的文件,其中包含由换行符分隔的单词列表
例如
computer
science
is
fun
really
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用一个BufferedReader对象但是我对文档中的这一行感到困惑.
"通常,每个由Reader构成的读取请求都会导致相应的读取请求由基础字符或字节流组成.因此,建议将读取()操作可能代价高昂的任何Reader包裹在BufferedReader周围,例如FileReaders和InputStreamReaders.例如,
Run Code Online (Sandbox Code Playgroud)BufferedReader in = new BufferedReader(new FileReader("foo.in"));将缓冲指定文件的输入.如果没有缓冲,read()或readLine()的每次调用都可能导致从文件中读取字节,转换为字符,然后返回,这可能是非常低效的."<
有人可以向我解释一下吗?在第二次阅读时,我开始相信这BufferedReader是我最好的选择.有没有更好的办法?
这是我的代码:
public static String readFile()
{
BufferedReader br = null;
String line;
String dump="";
try
{
br = new BufferedReader(new FileReader("dbDumpTest.txt"));
}
catch (FileNotFoundException fnfex)
{
System.out.println(fnfex.getMessage());
System.exit(0);
}
try
{
while( (line = br.readLine()) != null)
{
dump += line + "\r\n";
}
}
catch (IOException e)
{
System.out.println(e.getMessage() + " Error reading file");
}
finally
{
br.close();
}
return dump;
Run Code Online (Sandbox Code Playgroud)
因此eclipse正在抱怨由此引发的未处理的IO异常 br.close();
为什么会导致IO异常?
我的第二个问题是为什么eclipse不会抱怨以下代码:
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
try{
// …Run Code Online (Sandbox Code Playgroud) [原文] [1]
[我在服务器类中打印时的结果] [2]
在我的服务器类中,我想读取文本文件的每一行,包括空行,但它从文件的中间开始.我相信它与ecplise max输出有关.我知道,因为我从每一行得到正确的字节输出.