Tag:

如何将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中录制流媒体音频?

我正在尝试设置一个程序来记录互联网音频流的一部分,并将其保存到文件(最好是mp3或wav)。 我到处寻找,我找不到任何体面的方法来做到这一点。 我找到了两个看起来像他们工作的不同的库(NativeBass和Xuggle),但是它们都不支持我需要的64位窗口。 有谁知道使用java保存一部分互联网音频流的简单方法? (如果重要的话,那就是“audio / mpeg”流)。 编辑:好的,我找到了一种似乎有效的方法。 但我还有一个问题 import java.net.URLConnection; import java.net.URL; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.File; public class Test{ public static void main (String[] args){ try{ URLConnection conn = new URL(“http://streamurl.com/example”).openConnection(); InputStream is = conn.getInputStream(); OutputStream outstream = new FileOutputStream(new File(“C:/Users/Me/Desktop/output.mp3”)); byte[] buffer = new byte[4096]; int len; long t […]

Java中的文件流

我目前正在使用JOGL (Java OpenGL绑定)开发3D图形应用程序。 简而言之,我有一个巨大的横向二进制文件。 由于它的大小,我必须在运行时流式传输地形块。 因此,我们明确地看到随机访问问题。 我已经完成了第一个(和脏:))实现(也许它是multithreading的),我正在使用一种愚蠢的方法……这是它的初始化: dataInputStream = new DataInputStream(new BufferedInputStream(fileInputStream,4 * 1024); dataInputStream.mark(dataInputStream.available()); 当我需要读取(流)特殊块(我已经知道它在文件中的“偏移量”)时,我正在执行以下操作(对我感到羞耻:)): dataInputStream.reset(); dataInputStream.skipBytes(offset); dataInputStream.read(whatever I need…); 因为我没有经验,这是我能想到的第一件事:)所以,直到现在我已经阅读了3篇有用且非常有趣的文章(我建议你阅读它们,或许如果你对这个主题感兴趣的话) 字节缓冲区和非堆内存 – 格雷戈里先生似乎在Java NIO中识字。 Java技巧:如何快速阅读文件 [http://nadeausoftware.com/articles/2008/02/java_tip_how_read_files_quickly] – 这是一个有趣的基准。 文章:调优Java I / O性能 [http://java.sun.com/developer/technicalArticles/Programming/PerfTuning/] – 简单的Sun建议,但请向下滚动并查看那里的“随机访问”部分; 它们显示了RandomAccessFile(RAF)的简单实现,具有自缓冲改进。 格雷戈里先生在他的文章末尾提供了几个* .java文件。 其中之一是FileChannel + ByteBuffer + Mapping(FBM)和RAF之间的基准测试。 他说,与RAF相比,他在使用FBM时注意到了4倍的加速。 我在以下条件下运行此基准: 偏移量(例如访问位置)是随机生成的(在文件范围内,例如0 – file.length()); 文件大小为220MB; 1 000 000次访问(75%读取和25%写入) 结果令人震惊: […]

在play framework 2.0中将文件上传为流

我正在编写一个允许用户上传文件的Play 2.0 java应用程序。 这些文件存储在我使用Java库访问的第三方服务上,我在此API中使用的方法具有以下签名: void store(InputStream stream, String path, String contentType) 我已设法使用以下简单的控制器使上传工作: public static Result uploadFile(String path) { MultipartFormData body = request().body().asMultipartFormData(); FilePart filePart = body.getFile(“files[]”); InputStream is = new FileInputStream(filePart.getFile()) myApi.store(is,path,filePart.getContentType()); return ok(); } 我担心的是这个解决方案效率不高,因为默认情况下,play框架将客户端上传的所有数据存储在服务器上的临时文件中,然后在控制器中调用uploadFile()方法。 在传统的servlet应用程序中,我会编写一个以这种方式运行的servlet: myApi.store(request.getInputStream(), …) 我一直在寻找,没有找到任何解决方案。 我找到的最接近的例子是为什么调用错误或在BodyParser的Iteratee中完成请求在Play Framework 2.0中挂起? 但我没有找到如何修改它以满足我的需要。 在play2中是否有一种方法可以实现这种行为,即客户端上传的数据是否可以将Web应用程序直接“传递”到另一个系统? 谢谢。

我是否必须关闭由PrintStream包装的FileOutputStream?

我正在使用FileOutputStream和PrintStream,如下所示: class PrintStreamDemo { public static void main(String args[]){ FileOutputStream out; PrintStream ps; // declare a print stream object try { // Create a new file output stream out = new FileOutputStream(“myfile.txt”); // Connect print stream to the output stream ps = new PrintStream(out); ps.println (“This data is written to a file:”); System.err.println (“Write successfully”); […]

如何编写服务器/客户端video和音频流应用程序?

我必须创建一个客户端/服务器系统来流式传输video和音频。 这很简单。 喜欢youtube风格。 服务器应首先参加提供媒体列表的客户端,并等待每个客户端的选择以开始流式传输媒体。 直到创建一个套接字并显示一个简单的列表我就在它上面;)但我不知道我可以使用哪个类来传输。 这个例子基本上是youtube风格。 如何开始流式传输,客户端如何暂停再现,怎么能? 我知道如何流式传输文字,但video呢? 你知道任何教程页吗? 它与这个简单的服务器客户端示例有很大不同? import java.io.*; import java.io.*; import java.net.*; public class ThreadedEchoServer { public static void main(String[] args) { try { int i = 1; ServerSocket s = new ServerSocket(8189); while(true) { Runnable r = new ThreadedEchoHandler(incoming, i); Thread t = new Thread(r); t.start(); i++; } } catch […]

在Grails中放置文本文件的位置,以及如何获取路径

我需要在.txt文件中读入一个groovy类,以便逐行查询它。 但是我不确定我在grails应用程序中放入了什么文件夹,以及如何获取它的路径? 到目前为止,我已尝试将其放在src下,也放在新的文件夹web-app/txt 我已经尝试了以下内容来阅读它 fileIn = new File(‘/lexicon.txt’).text 和 fileIn = new File(‘txt/lexicon.txt’).text 无济于事。 任何身体有任何指针?

InputStream.getResourceAsStream()给出空指针exception

行persistenceProperties.load(is); 在以下方法中抛出nullpointerexception 。 我该如何解决这个错误? public void setUpPersistence(){ final Properties persistenceProperties = new Properties(); InputStream is = null; try { is = getClass().getClassLoader().getResourceAsStream(“src/test/samples/persistence.properties”); persistenceProperties.load(is); }catch (IOException ignored) {} finally { if (is != null) {try {is.close();} catch (IOException ignored) {}} } entityManagerFactory = Persistence.createEntityManagerFactory( “persistence.xml”, persistenceProperties); } 我试图通过将包含该方法的类移动到应用程序结构中的各个其他位置,并通过以下方式更改错误之前的代码行来尝试此操作: is = getClass().getClassLoader().getResourceAsStream(“persistence.properties”); is = getClass().getClassLoader().getResourceAsStream(“/persistence.properties”); is = […]

如何使用JAXB Marshaller流式传输大型文件?

我面临的问题是如何将一大堆对象编组到一个XML文件中,如此之大,我无法一步完成整个列表的编组。 我有一个方法以块的forms返回这些对象,但随后我使用JAXB编组它们,marshaller返回一个例外,即这些对象不是根元素。 对于您希望在一个步骤中编组完整文档的正常情况,这是正常的,但如果我将JAXB_FRAGMENT属性设置为true,也会发生这种情况。 这是所需的XML输出: … 所以我假设我需要某种类型的监听器来动态加载下一个重复元素块,以便在编写rootElement的结束标记之前将其提供给编组器。 但是怎么做呢? 到目前为止,我只使用JAXB来编组小文件,而JAXB文档并没有为该用例提供太多提示。

如何从InputStream获取SelectableChannel?

我想从超时的java.io.InputStream中读取。 显然,正确的方法是使用java.nio.channels.SelectableChannel和java.nio.channels.Selector。 不幸的是,目前还不清楚如何从InputStream转到SelectableChannel。 InputStream来自非传统来源 – http://java.sun.com/products/javacomm/reference/api/javax/comm/CommPort.html#getInputStream()