之间有什么区别BufferedReader,BufferedInputStream并Scanner在Java?BufferedReader读取文本并BufferedInputStream读取byte.除此之外有什么区别吗?
我想使用BufferedReader在控制台中输入多行文本,当我点击"Enter"以查找整个文本长度的总和时.问题是,我似乎进入了一个无限循环,当我按下"Enter"时,程序没有结束.我的代码如下:
InputStreamReader instream = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(instream);
line= buffer.readLine();
while (line!=null){
length = length + line.length();
line= buffer.readLine();
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我我做错了什么吗?
我正在使用Java编程.
我正在尝试编写代码,可以识别用户是否在基于控制台的程序中按下回车键.
我怎么能用java做到这一点.有人告诉我,这可以使用扫描仪或缓冲输入阅读器完成.我不明白(或知道如何使用)缓冲输入阅读器.
我尝试使用扫描仪这样做,但按两次输入后程序终止,它不起作用
Scanner readinput = new Scanner(System.in);
String enterkey = "Hola";
System.out.print(enterkey);
enterkey = readinput.nextLine();
System.out.print(enterkey);
if(enterkey == ""){
System.out.println("It works!");
Run Code Online (Sandbox Code Playgroud)
谢谢
- 编辑 - 以下代码使用equals字符串的方法而不是==
Scanner readinput = new Scanner(System.in);
String enterkey = "Hola";
System.out.print(enterkey);
enterkey = readinput.nextLine();
System.out.print(enterkey);
if(enterkey.equals("")){
System.out.println("It works!");
Run Code Online (Sandbox Code Playgroud)
如何做到这一点,以及使用缓冲输入阅读器做到这一点的优点是什么?
比方说,我有一个文件夹maps,里面有maps我map1.txt,map2.txt,和map3.txt.如何使用Java和BufferReader读取.txt文件夹maps中的所有文件(如果可能的话)?
我一直在寻找最快的方法来读取和写入具有有限内存(约64MB)的java中的大文件(0.5 - 1 GB).文件中的每一行代表一条记录,所以我需要逐行获取它们.该文件是普通文本文件.
我尝试过BufferedReader和BufferedWriter但它似乎不是最好的选择.读取和写入大小为0.5 GB的文件大约需要35秒,只读取没有处理的写入.我认为这里的瓶颈是写作,因为单独阅读大约需要10秒钟.
我试图读取字节数组,但是在每个读取的数组中搜索行需要更多时间.
有什么建议吗?谢谢
所以我在将一个文本文件读入我的程序时遇到了问题.这是代码:
try{
InputStream fis=new FileInputStream(targetsFile);
BufferedReader br=new BufferedReader(new InputStreamReader(fis));
//while(br.readLine()!=null){
for(int i=0;i<100;i++){
String[] words=br.readLine().split(" ");
int targetX=Integer.parseInt(words[0]);
int targetY=Integer.parseInt(words[1]);
int targetW=Integer.parseInt(words[2]);
int targetH=Integer.parseInt(words[3]);
int targetHits=Integer.parseInt(words[4]);
Target a=new Target(targetX, targetY, targetW, targetH, targetHits);
targets.add(a);
}
br.close();
}
catch(Exception e){
System.err.println("Error: Target File Cannot Be Read");
}
Run Code Online (Sandbox Code Playgroud)
我正在读取的文件是100行参数.如果我使用for循环它完美地工作.如果我使用while语句(for循环上面注释掉的那个),它会在50处停止.用户可能会运行带有任意行数的文件的程序,因此我当前的for循环实现赢了工作.
为什么线路while(br.readLine()!=null)停在50?我检查了文本文件,没有任何东西可以挂起来.
当我使用while循环时,我没有从try-catch中得到任何错误,所以我很难过.有人有主意吗?
有没有办法检查BufferedReader对象中是否有东西要读?像C++这样的东西cin.peek().谢谢.
我正在尝试阅读一些文字文件中的一些单词,我想用于我正在写的文字游戏.此列表存储在assets目录中,是一个txt文件.但是,每当我尝试打开它时,它都会引发异常.
List<String>wordList = new ArrayList<String>();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(getAssets().open("wordlist.txt"))); //throwing a FileNotFoundException?
String word;
while((word=br.readLine()) != null)
wordList.add(word); //break txt file into different words, add to wordList
}
catch(IOException e) {
e.printStackTrace();
}
finally {
try {
br.close(); //stop reading
}
catch(IOException ex) {
ex.printStackTrace();
}
}
String[]words = new String[wordList.size()];
wordList.toArray(words); //make array of wordList
for(int i=0;i<words.length; i++)
Log.i("Brian", words[i]); //print out words in array
}
Run Code Online (Sandbox Code Playgroud)
这是错误日志,如果有任何帮助:
02-22 20:49:47.646: WARN/System.err(2351): java.io.FileNotFoundException: wordlist.txt …Run Code Online (Sandbox Code Playgroud) 似乎是一个相当热门的问题,但我还没有找到解决方案; 也许是因为它有这么多口味.虽然这是.我正在尝试阅读一些逗号分隔文件(偶尔分隔符可能比逗号更独特,但逗号现在就足够了).
这些文件应该在整个行业标准化,但最近我们已经看到了许多不同类型的字符集文件.我希望能够设置一个BufferedReader来弥补这一点.
这样做的标准方法是什么,并检测它是否成功?
我对这种方法的第一个想法是循环遍历字符集simple-> complex,直到我可以无异常地读取文件.虽然不完全理想......
感谢您的关注.
我必须从我的Java程序中打开一个.exe文件.所以我尝试了第一个代码.
Process process = runtime.exec("c:\\program files\\test\\test.exe");
Run Code Online (Sandbox Code Playgroud)
但是我收到了一些错误.然后我发现exe必须从c:// program files/test /那个位置启动,然后它会打开而没有错误.所以我决定编写一个.bat文件并执行,以便它将cd到该位置并执行.exe文件.
以下是我的代码:
BufferedWriter fileOut;
String itsFileLocation = "c:\\program files\\test\\"
System.out.println(itsFileLocation);
try {
fileOut = new BufferedWriter(new FileWriter("C:\\test.bat"));
fileOut.write("cd\\"+"\n");
fileOut.write("cd "+ itsFileLocation +"\n");
fileOut.write("test.exe"+"\n");
fileOut.write("exit"+"\n");
fileOut.close(); // Close the output stream after all output is done.
} catch (IOException e1) {
e1.printStackTrace();
} // Create the Buffered Writer object to write to a file called filename.txt
Runtime runtime = Runtime.getRuntime();
try {
Process process =runtime.exec("cmd /c start C:\\test.bat");
} catch (IOException e) …Run Code Online (Sandbox Code Playgroud) bufferedreader ×10
java ×9
io ×2
android ×1
batch-file ×1
console ×1
encoding ×1
exe ×1
file-io ×1
input ×1
peek ×1
performance ×1
windows ×1