标签: bufferedreader

读取输入直到 control+d

我想提示用户开始输入字符,并且我希望他们能够输入任意长的字符,直到他们点击 control+d 退出。

例如,他们可以输入一串数字,例如:1234567,一旦他们决定按 control+d,他们输入的行就会显示出来(因此不必按回车键)

我想我需要一个缓冲阅读器或其他东西。有什么建议?

java bufferedreader

3
推荐指数
1
解决办法
2万
查看次数

Can BufferedReader可以在Java中自动关闭

我收到了关于资源泄漏的警告(BufferedReader没有关闭).我通过在Return语句之前放置一个close语句并运行程序来修复它.但是我得到了一个N​​ullPointerException.我的问题是它可以在文件读取完成时自动关闭(不知何故).这个问题看起来很相似.

java exception nullpointerexception bufferedreader

3
推荐指数
1
解决办法
1072
查看次数

是否有任何 Java 流输入库保留行结束字符?

我想一次一行地遍历一个文本文件,对内容进行操作,并将结果流式传输到一个单独的文件中。的教科书案例BufferedReader.readLine()

但是:我需要用换行符将我的行粘在一起,如果原始文件没有适用于我的平台的“正确”换行符(Linux 上的 DOS 文件,反之亦然)怎么办?我想我可以在流中提前阅读一下,看看我找到了什么样的行尾,即使那真的很糟糕。

但是:假设我的输入文件没有尾随换行符。我想让事情保持原样。现在我需要在阅读每一行之前先看下一行结尾。在这一点上,为什么我要使用一个完全给我的readLine()课程?

这似乎应该是一个已解决的问题。是否有一个库(或者甚至更好的核心 Java7 类!)可以让我调用一个类似于readLine()从流中返回一行文本的方法,并且EOL 字符完好无损?

java inputstream line-endings bufferedreader

3
推荐指数
1
解决办法
2669
查看次数

如何从文件中读取N行?

我正在尝试练习从 Java 文件中读取文本。我不太了解如何读取 N 行,比如文件中的前 10 行,然后将这些行添加到ArrayList.

例如,文件包含 1-100 个数字,如下所示;

- 1 
- 2 
- 3 
- 4 
- 5 
- 6 
- 7 
- 8 
- 9 
- 10 
- ....
Run Code Online (Sandbox Code Playgroud)

我想读取前 5 个数字,即 1,2,3,4,5 并将其添加到数组列表中。到目前为止,这是我设法做的,但我被卡住了,不知道现在该做什么。

ArrayList<Double> array = new ArrayList<Double>();
InputStream list = new BufferedInputStream(new FileInputStream("numbers.txt"));

for (double i = 0; i <= 5; ++i) {
    // I know I need to add something here so the for loop read through 
    // the file but I …
Run Code Online (Sandbox Code Playgroud)

java for-loop arraylist fileinputstream bufferedreader

3
推荐指数
1
解决办法
2万
查看次数

从文本文件中读取数据并创建对象

我需要一些帮助:我正在用 Java 进行超市模拟,但我遇到了一个问题,我有一个文本文件 (Stock.txt),其中包含所有超市库存,例如:

  • 0-面包店-巧克力蛋糕-$12.5-250
  • 1-Meat-Premium Steak-$2.6-120
  • 2-海鲜-金枪鱼 - 1.2-14 美元
  • ...

其中第一个数字是产品的“id”,其次是产品所属的部门,第三个是产品名称,接下来是价格,最后一个数字是该产品的库存数量. 我有这门课:

public class Product {
    protected String name;
    protected double price;
    protected String department;
    protected int id;
    protected int stock;
}
Run Code Online (Sandbox Code Playgroud)

所以,基本上我需要做的是从文本文件中读取每一行并创建产品,即对于第一行,做这样的事情:

Product product1 = new Product(0,"Bakery","Chocolate Cake", 12.5, 250);     
Run Code Online (Sandbox Code Playgroud)

然后将其添加到数组中

Product[0] = product1;
Run Code Online (Sandbox Code Playgroud)

对于文本文件中的所有内容,当运行模拟时,每个客户将购买随机数量的库存随机产品,因此库存数量将减少。最后,当模拟结束时,程序必须在同一个文本文件中写入每个产品的修改数量。

问题是这可能太容易了,但我不知道如何做到这一点,因为自从我开始用 Java 编程(我是初学者)以来,用 Java 读取和写入文件对我来说一直是一个真正的问题。我有一些使用 BufferedReader 和 StringTokenizer 类来读取和创建对象问题的想法,但我不知道如何去做,我也不知道我必须如何做覆盖问题。我真的很感激你的帮助!

哦!顺便说一句,我真的只需要使用数组,所以使用 ArrayList 或任何其他结构甚至都不是一个选择:(

java writefile bufferedreader stringtokenizer readfile

3
推荐指数
2
解决办法
5万
查看次数

Android URL连接java.io.FileNotFoundException

我尝试向WordlPress网站发送正常的Http请求.

这是URL:" http://localhost.com/api/submit_comment/?post_id=12345&name=Max&email=Max.Mustermann@googlemail.com&content=hallo "

如果我用我的Web浏览器打开它,一切正常.如果我在Android App上打开它会抛出java.io.FileNotFoundException.

Android代码:

class SendComment extends AsyncTask<String, Void, String> {

    protected String doInBackground(String... urls) {
        String _output = null;
        try {
            URL url = new URL(urls[0]);
            BufferedReader buffer = new BufferedReader(new InputStreamReader(url.openStream()));
            _output = buffer.readLine();
            buffer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return _output;
    }

    protected void onPostExecute(String result) {

    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我删除电子邮件地址的"@"或".com"时,它甚至适用于Android.似乎可用的电子邮件地址是崩溃的原因.

这是StackTrace:

java.io.FileNotFoundException: http://localhost.com/api/submit_comment?post_id=23856&name=Max&email=Max.Mustermann%40googlemail.com&content=hallo 
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:206) 
at java.net.URL.openStream(URL.java:470)
at de.example.app.SendComment.doInBackground(ServerManager.java:230)
at de.example.app.SendComment.doInBackground(ServerManager.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:292)
at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at …
Run Code Online (Sandbox Code Playgroud)

java email android httprequest bufferedreader

3
推荐指数
1
解决办法
6258
查看次数

带有 readLine() 的 while 循环

这是我的问题:正常的 while 循环看起来像这样 -

while(condition){statements} 
Run Code Online (Sandbox Code Playgroud)

and 语句执行直到条件变为false并且循环结束。我对这种陈述的逻辑感兴趣:

while((a=b.readLine) != null) { ... } 
Run Code Online (Sandbox Code Playgroud)

就我而言,它用于客户端 - 服务器通信。条件有时为真,有时为真,但循环看起来像是在永远测试条件,当为真时,{}执行语句。在我看来,循环等待条件为真,然后运行语句。它是否以某种方式与方式BufferedReaderInputStreamReader工作或什么有关?此外,这个循环似乎永远不会结束,它只是等待条件成立true,然后运行语句,然后再次等待条件成立true,等等。我将感谢您的任何澄清。

java readline while-loop bufferedreader inputstreamreader

3
推荐指数
2
解决办法
1万
查看次数

BufferedReader中的字符串没有拆分?

现在我正在为一个游戏编写一个小的聊天历史插件,其中我想保存所有消息以及它在文件中发送的时间,这是完美的,但是在阅读它时我遇到了一些问题. 变量: history = new HashMap<Date, String>(); 这是我加载消息的方式:

public static void load(){
    File f = new File(config.getString("file"));
    if (!f.exists()){
        try {
            f.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    try{
        BufferedReader br = new BufferedReader(new FileReader(f));
        String line;
        while ((line = br.readLine())!=null){
            String date = line.split(" ")[0];
            for (int i = 0; i < line.split(" ").length; i++){
                System.out.print(i+"="+line.split(" ")[i]+" ");
            }
            if (date.split(",")[0].split(".").length == 0) continue;
            line = line.replaceAll(date+" ", "");
            history.put(fromString(date), line);
        }
        br.close();
    }catch(IOException e){
        e.printStackTrace();
    } …
Run Code Online (Sandbox Code Playgroud)

java string bufferedreader bukkit

3
推荐指数
1
解决办法
80
查看次数

有没有理由不用 BufferedReader 包装 InputStreamReader?

我有以下代码可以从 CSV 中读取:

InputStream inp = getClass().getResourceAsStream(filename);
InputStreamReader r = new InputStreamReader(inp);
BufferedReader reader = new BufferedReader(r);
Run Code Online (Sandbox Code Playgroud)

关于已回答的问题: Java BufferedReader将 InputStream 转换为 BufferedReaderJava 的 BufferedReader 和 InputStreamReader 类之间有什么区别?

BufferedReader[BR] 和 InputStreamReader[ISR] 都实现了相同的接口。BR 拥有 ISR 的所有方法以及其他方法,包括非常有用的 readLine() 方法和不太有用但仍然相关的 skip() 方法。尽管在这方面 BR 可以比 ISR 更有效地执行相同操作,但您不一定需要 BR 来读取单个字符。唯一的显着区别是 FileReader 是 ISR 的子类而不是 BR,尽管我在本网站上有消息称 FileReader 由于替代方案而不再真正使用。

我的研究表明 ISR 可以做的一切都由 BR 做得更好。我是一名年轻的开发人员,所以每个定义或导入的类对我来说似乎都是相关的。我想了解的是,是否不再使用某些类,用新版本或框架代替它们。我想知道更有经验的开发人员怎么说。那么,在使用 ISR 时是否有理由不使用 BR?

API 的快速链接:
BufferedReader
InputStreamReader


java io bufferedreader

3
推荐指数
1
解决办法
788
查看次数

BufferedReader 正确使用

我使用以下样式使用 BufferedReader 读取文件

try (BufferedReader br = new BufferedReader(new FileReader("my_file"))) {
  ...
  br.close();
} catch( IOException e ) {
  System.out.println( e.getMessage() );
} 
Run Code Online (Sandbox Code Playgroud)

我想知道的事情:

1-close()在正确的地方吗?

2- 我应该try..catch为`close()放置另一个吗?

3- 因为我使用了newfor br,是否足以调用close()或者我必须br = null为 GC编写?

4-FileReader已经被new编辑了,所以我应该销毁它吗?

java bufferedreader

3
推荐指数
1
解决办法
554
查看次数