Tag:

如何使用纯Java流式传输mp3

是否可以使用纯Java流式播放mp3? 如果是这样,实现这一目标的最佳资源是什么。 如果没有,是否只有使用Java的其他音乐格式可以流式传输?

如何在Java中阻止线程在阻塞读取操作中等待?

我有一个执行以下代码的线程: public void run() { try { int n = 0; byte[] buffer = new byte[4096]; while ((n = in.read(buffer)) != -1) { out.write(buffer, 0, n); out.flush(); } } catch (IOException e) { System.out.println(e); } } 其中是System.in 。 我怎样才能优雅地停止这样的线程? 关闭System.in和使用Thread.interrupt似乎都不起作用。

可以在流上计算SHA-1算法吗? 内存占用少?

我正在寻找一种方法来计算非常大的文件的SHA-1校验和,而不必立即将它们完全加载到内存中。 我不知道SHA-1实现的细节,因此想知道是否有可能这样做。 如果您了解SAX XML解析器,那么我所寻找的将是类似的东西:通过一次只将一小部分加载到内存来计算SHA-1校验和。 我发现的所有示例(至少在Java中)总是依赖于将文件/字节数组/字符串完全加载到内存中。 如果你甚至知道实现(任何语言),那么请告诉我!

如何使用InputStream从ZIP读取文件?

我必须使用SFTP从ZIP存档(只有一个文件,我知道它的名字)中获取文件内容。 我唯一拥有的是ZIP的InputStream 。 大多数示例显示如何使用此语句获取内容: ZipFile zipFile = new ZipFile(“location”); 但正如我所说,我的本地机器上没有ZIP文件,我不想下载它。 InputStream是否足以读取? UPD:这是我的方式: import java.util.zip.ZipInputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class SFTP { public static void main(String[] args) { String SFTPHOST = “host”; int SFTPPORT = 3232; String SFTPUSER = “user”; String SFTPPASS = “mypass”; String SFTPWORKINGDIR = “/dir/work”; Session session = […]

向后播放WAV文件

我正在用Java 编写Braid 。 如果您回放时间,声音会向后播放。 如何向后播放WAV文件? 也许有一个像previous()类的流? 在Braid的网站上你能看出我的意思吗? 更新: 解决了! 看我自己的post。

在java中解析非常大的XML文档(以及更多)

(以下所有内容均以Java编写) 我必须构建一个应用程序,将可能非常大的XML文档作为输入。 该文档是加密的 – 不是使用XMLsec,而是使用我客户的预先存在的加密算法 – 将分三个阶段进行处理: 首先,根据上述算法解密流。 其次,扩展类(由我提供的API的第三方编写)将读取文件的某些部分。 读取的数量是不可预测的 – 特别是它不能保证在文件的标题中,但可能出现在XML中的任何位置。 最后,另一个扩展类(相同的交易)将输入XML细分为1..n子集文档。 这些可能会在某些方面与第二个操作处理的文档部分重叠,即:我相信我需要回顾我用来处理这个对象的任何机制。 这是我的问题: 有没有办法在没有一次将整个数据读入内存的情况下执行此操作? 显然我可以将解密实现为输入流filter,但我不确定是否可以按照我描述的方式解析XML; 通过遍历,需要收集第二步的信息,然后通过倒回文档并再次传递它以将其拆分为作业,理想情况下释放文档的所有不再使用的部分他们已经过去了。

何时会在JAVA的流中发生EOFException

我正在使用DataInputStream并有一个关于EOFExceptions的问题。 根据java文档: 表示在输入期间意外到达文件末尾或流末尾的信号。 此exception主要由数据输入流用于信号流的结束。 请注意,许多其他输入操作在流的末尾返回特殊值而不是抛出exception。 这是否意味着当生成EOFException时,流不会再次打开? 这是否意味着你永远不会期待它的更多数据? 如果输出流连接到输入流并且调用了outputstream.close(),输入流是否会收到EOFException或IOException? IOException被描述为: 表示发生了某种I / Oexception的信号。 此类是由失败或中断的I / O操作产生的一般exception类。 输出流上的close是否会在datainputstream端产生EOFException或IOException?

用Java流video流

将实时video录制和流式传输到许多客户端的最佳方法是什么? 有图书馆吗?

如何缓存InputStream以供多种用途

我有一个文件的InputStream,我使用apache poi组件来读取它像这样: POIFSFileSystem fileSystem = new POIFSFileSystem(inputStream); 问题是我需要多次使用相同的流,POIFSFileSystem在使用后关闭流。 从输入流缓存数据然后将更多输入流提供给不同的POIFSFileSystem的最佳方法是什么? 编辑1: 通过缓存我的意思是存储供以后使用,而不是作为加速应用程序的方法。 也可以将输入流读入数组或字符串,然后为每次使用创建输入流? 编辑2: 很抱歉重新打开这个问题,但在桌面和Web应用程序中工作时条件有所不同。 首先,我从tomcat web app中的org.apache.commons.fileupload.FileItem获取的InputStream不支持标记,因此无法重置。 其次,我希望能够将文件保存在内存中,以便在处理文件时更快地访问和减少io问题。

无法从Java进程读取InputStream(Runtime.getRuntime()。exec()或ProcessBuilder)

我正在尝试使用Java从外部启动一个进程,并且无法从其InputStream中读取任何内容。 如果我用“ls”,“ps”或“kill”等命令启动进程,一切正常。 我可以在InputStream或Process的ErrorStream上启动该过程并获取信息。 如果我尝试使用像“ftp”或“telnet”这样的命令,则在尝试读取时,InputStream和ErrorStream都会阻塞我的程序。 任何时候都不会通过这些流传递任何信息。 谁能解释一下这种行为? 这些命令是不可能的,还是我的实现有问题? String processName = _configuration.getProgramCommand().getCommand(); ProcessBuilder procBuilder = new ProcessBuilder(processName); System.out.println(“Starting process “+processName); _proc = Runtime.getRuntime().exec(processName);// procBuilder.start(); if(!procBuilder.redirectErrorStream()) { _errorWorker = new ProcessErrorWorker(_proc); _errorWorker.start(); } String proc_start_answer = _configuration.getNextCommand().getCommand(); System.out.println(“Waiting for process answer ‘”+proc_start_answer+”‘”); BufferedReader input = new BufferedReader(new InputStreamReader(_proc.getInputStream())); String answer = “”; try { System.out.println(“inputstream ready: “+input.ready()); […]