Tag: bufferedreader

java.net.Socket threadsafe以什么方式?

我有一个Socket,我正在阅读和写作,通过BufferedReaders和BufferedWriters。 我不确定哪些操作可以从单独的线程中完成。 我猜想同时从两个不同的线程写入套接字是个坏主意。 与从两个不同的线程同时读取套接字相同。 在另一个线程上写入时在一个线程上阅读怎么样? 我问,因为我想在读取时长时间阻塞一个线程,因为它等待更多数据,但在这个等待期间,我偶尔也会在套接字上发送数据。 我不清楚这是否是线程安全的,或者我是否应该在写入之前取消读取(这会很烦人)。

Java中BufferedReader.readLine()的最大行长度?

我使用BufferedReader的readLine()方法从套接字读取文本行。 没有明显的方法来限制读取行的长度。 我担心数据源可能(恶意地或错误地)写入大量数据而没有任何换行符,这将导致BufferedReader分配无限量的内存。 有没有办法避免这种情况? 或者我是否必须自己实现readLine()的有界版本?

Java – 读取文件夹中的所有.txt文件

比方说,我有一个名为maps的文件夹,在内部maps我有map1.txt , map2.txt,和map3.txt 。 如何使用Java和BufferReader读取文件夹maps所有.txt文件(如果可能的话)?

逐行读取文件的最快方法是每行有2组字符串?

我可以逐行读取每行包含两个字符串的最快方法是什么。 示例输入文件将是: Fastest, Way To, Read One, File Line, By Line …. can be a large file 即使字符串之间有空格,每行也总是有两组字符串,例如“By Line” 目前我正在使用 FileReader a = new FileReader(file); BufferedReader br = new BufferedReader(a); String line; line = br.readLine(); long b = System.currentTimeMillis(); while(line != null){ 是否足够有效或使用标准JAVA API有更高效的方式(请不要外部库)任何帮助表示赞赏谢谢!

使用Java读取文件或流的最强大方法(防止DoS攻击)

目前我有以下代码用于读取inputStream。 我将整个文件存储到StringBuilder变量中,然后处理该字符串。 public static String getContentFromInputStream(InputStream inputStream) // public static String getContentFromInputStream(InputStream inputStream, // int maxLineSize, int maxFileSize) { StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String lineSeparator = System.getProperty(“line.separator”); String fileLine; boolean firstLine = true; try { // Expect some function which checks for line size limit. // eg: reading […]

Java变量未初始化错误

我在Java程序中收到以下错误: Java变量未初始化错误…错误:变量nam和r未初始化位置类子 但是nan和r已经初始化了,但我仍然得到同样的错误。 public class cla { int rn; String name; void get(String a, int x) { name = a; rn = x; } void display() { System.out.println(“student name: ” + name + “roll no.:” + rn); } } import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class child { public static void main(String args[]) throws […]

我应该如何阅读缓冲读卡器?

我有以下从缓冲读取器读取的示例: while ((inputLine = input.readLine()) != null) { System.out.println(“I got a message from a client: ” + inputLine); } 只要缓冲读卡器中出现某些内容(本例中为input ,就会执行循环println的代码。 在我的例子中,如果客户端应用程序向套接字写入内容,则将执行循环中的代码(在服务器应用程序中)。 但我不明白它是如何工作的。 inputLine = input.readLine()等待缓冲读取器中出现某些内容,当出现某些内容时,它返回true并执行循环中的代码。 但是当null可以返回。 还有一个问题。 上面的代码取自throws Exception的方法,我在Thread的run方法中使用了这段代码。 当我在run之前尝试放置throws Exception ,编译器会抱怨:重写方法不会抛出exception。 没有throws exception我还有另一个来自编译器的抱怨:未报告的exception。 那么,我该怎么办?

从大文件中逐个读取30Million用户ID

我正在尝试使用Java读取一个非常大的文件。 那个大文件会有这样的数据,这意味着每一行都有一个用户ID。 149905320 1165665384 66969324 886633368 1145241312 286585320 1008665352 在那个大文件中,将有大约3000万用户ID。 现在我试图从那个大文件中一个一个地读取所有用户id。 意味着每个用户ID应该只从该大文件中选择一次。 例如,如果我有30万个用户ID,那么它应该使用multithreading代码只打印一次3000万用户ID。 下面是我的代码,它是一个运行10个线程的multithreading代码,但是使用下面的程序,我无法确保每个用户ID只被选中一次。 public class ReadingFile { public static void main(String[] args) { // create thread pool with given size ExecutorService service = Executors.newFixedThreadPool(10); for (int i = 0; i < 10; i++) { service.submit(new FileTask()); } } } class FileTask implements Runnable { […]

BufferedReader中的缓冲区大小是多少?

构造函数中缓冲区大小的含义是什么? BufferedReader(Reader in, int size) 正如我写的程序: import java.io.*; class bufferedReaderEx{ public static void main(String args[]){ InputStreamReader isr = null; BufferedReader br = null; try{ isr = new InputStreamReader(System.in); // System.out.println(“Write data: “); // int i = isr.read(); // System.out.println(“Data read is: ” + i); //Thus the InputStreamReader is useful for reading the character from the […]

Java使用扫描仪输入密钥按下

我正在使用Java编程。 我正在尝试编写代码,该代码可以识别用户是否在基于控制台的程序中按下回车键。 我怎么能用java做到这一点。 有人告诉我,这可以使用Scanner或缓冲输入阅读器完成。 我不理解(或知道如何使用)缓冲输入阅读器。 我尝试使用扫描仪执行此操作,但在按两次输入后程序终止,但它不起作用 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!”); 谢谢 – 编辑 – 以下代码使用字符串的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!”); 如何做到这一点,以及使用缓冲输入阅读器做到这一点的优点是什么?