Tag: io

如何清除Java中的扫描程序缓冲区?

我有这样的事情: Scanner in=new Scanner(System.in); int rounds = 0; while (rounds 3) { System.out.print(“How many rounds? “); if (in.hasNextInt()) { rounds = in.nextInt(); } else { System.out.println(“Invalid input. Please try again.”); System.out.println(); } // Clear buffer } System.out.print(rounds+” rounds.”); 我该如何清除缓冲区? 编辑:我尝试了以下内容,但由于某些原因它无效: while(in.hasNext()) in.next();

使用java写入控制台窗口中的相同位置

我想在控制台窗口中的同一位置写一个字符。 我想写的字符是/ – \ _ 。 这会让我有点微调,我可以显示进度或加载。 你怎么能把字符写到同一个地方呢? 否则,你将结束这样的事情/-\_/-\_/-\

使用内存中的字节数组创建Java File对象(或等效对象)(无物理文件)

我想在内存中创建一个Java File对象(不创建物理文件),并用字节数组填充其内容。 可以这样做吗? 我们的想法是将它传递给Spring InputStreamSource 。 我正在尝试下面的方法,但它返回说“字节数组不包含文件名。”。 MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message); helper.setFrom(“no-reply@example.com”, “xyz”); helper.setTo(email); helper.setText(body,true); helper.setSubject(subject); helper.addInline(“cImage”, new InputStreamResource(new ByteArrayInputStream(imageByteArr))); mailSender.send(message);

如何将Process的输入/输出流复制到系统对应的流程?

这是对这个问题的跟进。 答案表明存在 将Process out,err和输入流复制到System版本 使用IOUtils.copy如下(修复各种编译错误后): import org.apache.commons.io.IOUtils; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException, InterruptedException { final Process process = Runtime.getRuntime().exec(“/bin/sh -i”); new Thread(new Runnable() {public void run() { try { IOUtils.copy(process.getInputStream(), System.out); } catch (IOException e) {} } } ).start(); new Thread(new Runnable() {public void run() { try […]

Java中的自动检测字符编码

似乎是一个相当受欢迎的问题,但我还没有找到解决方案; 也许是因为它有这么多口味。 虽然这是。 我正在尝试阅读一些逗号分隔文件(偶尔分隔符可能比逗号更独特,但逗号现在就足够了)。 这些文件应该在整个行业标准化,但最近我们已经看到了许多不同类型的字符集文件。我希望能够设置一个BufferedReader来弥补这一点。 这样做的标准方法是什么,并检测它是否成功? 我对这种方法的第一个想法是循环遍历字符集simple-> complex,直到我可以无exception地读取文件。 虽然不完全理想…… 感谢您的关注。

Socket,BufferedReader挂起在readLine()

我有一台服务器,最初这样做: – BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); for (;;) { String cmdLine = br.readLine(); if (cmdLine == null || cmdLine.length() == 0) break; … } 稍后它将套接字传递给另一个类“foo”此类等待特定于应用程序的消息。 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); appCmd=br.readLine(); 我的客户端发送以下序列: “谷仓” “你好吗?\ n” “\ n” “将它传递给foo \ n” “\ n” 问题是有时“foo”没有得到它的回应。 它挂在readLine() 。 服务器中的readLine()使用提前读取缓存数据的可能性是多少,“foo”类正在变得饥饿? 如果我在客户端添加睡眠,它可以工作。 但它永远有效的可能性是多少? “谷仓” “你好吗?\ n” “\ […]

我应该使用DataInputStream还是BufferedInputStream

我想从文本文件中读取每一行并将它们存储在ArrayList中(每行是ArrayList中的一个条目)。 到目前为止,我知道BufferedInputStream会写入缓冲区,并且只有在缓冲区为空时才会执行另一次读取操作,从而最大限度地减少或至少减少操作系统操作量。 我是对的 – 我有道理吗? 如果上述情况是在任何情况下,任何人都想使用DataInputStream。 最后我应该使用哪两个以及为什么 – 或者无关紧要。

Javamultithreading文件下载性能

最近我在一个需要比以前更多的IO交互的项目上工作,我觉得我想要查看常规库(特别是Commons IO)并解决更深入的IO问题。 作为一项学术测试,我决定实现一个基本的,multithreading的HTTP下载器。 这个想法很简单:提供一个下载URL,代码将下载该文件。 为了提高下载速度,将文件分块并同时下载每个块(使用HTTP Range: bytes=xx标头)以尽可能多地使用带宽。 我有一个工作原型,但你可能已经猜到了,它并不完全理想。 目前我手动启动3个“下载程序”线程,每个线程下载文件的1/3。 这些线程使用通用的同步“文件编写器”实例来实际将文件写入磁盘。 完成所有线程后,“文件编写器”完成,任何打开的流都关闭。 一些代码片段可以给你一个想法: 线程启动: ExecutorService downloadExecutor = Executors.newFixedThreadPool(3); … downloadExecutor.execute(new Downloader(fileWriter, download, start1, end1)); downloadExecutor.execute(new Downloader(fileWriter, download, start2, end2)); downloadExecutor.execute(new Downloader(fileWriter, download, start3, end3)); 每个“下载程序”线程下载一个块(缓冲)并使用“文件编写器”写入磁盘: int bytesRead = 0; byte[] buffer = new byte[1024*1024]; InputStream inStream = entity.getContent(); long seekOffset = chunkStart; while ((bytesRead = inStream.read(buffer)) […]

从文件中读取特殊符号

我正在尝试使用Java读取文件,并且该文件也包含特殊字符。 我试图将文件的内容写入另一个文件。 读取特殊字符文件的解决方案是什么?

Java I / O流; 有什么区别?

java.io有许多不同的I / O流,(FileInputStream,FileOutputStream,FileReader,FileWriter,BufferedStreams等等),我很困惑,确定它们之间的差异。 有哪些例子表明一种流类型优先于另一种流类型,它们之间的真正区别是什么?