Tag:

当jar文件从URL打开为InputStream时,JarEntry.getSize()返回-1

我试图从JarInputStream读取文件,文件的大小返回-1。 我从URL访问Jar文件作为inputStream。 URLConnection con = url.openConnection(); JarInputStream jis = new JarInputStream(con.getInputStream()); JarEntry je = null; while ((je = jis.getNextJarEntry()) != null) { htSizes.put(je.getName(), new Integer((int) je.getSize())); if (je.isDirectory()) { continue; } int size = (int) je.getSize(); // -1 means unknown size. if (size == -1) { size = ((Integer) htSizes.get(je.getName())).intValue(); } byte[] b = new […]

复制InputStream,如果大小超过限制则中止操作

我尝试将InputStream复制到File,如果InputStream的大小大于1MB,则中止复制。 在Java7中,我编写了如下代码: public void copy(InputStream input, Path target) { OutputStream out = Files.newOutputStream(target, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE); boolean isExceed = false; try { long nread = 0L; byte[] buf = new byte[BUFFER_SIZE]; int n; while ((n = input.read(buf)) > 0) { out.write(buf, 0, n); nread += n; if (nread > 1024 * 1024) {// Exceed 1 MB […]

使用现有JProgressBar的Java ProgressMonitorInputStream

我正在玩Java的ProgressMonitorInputStream来监控数据流经BufferedInputStream。 这是我正在尝试的代码: InputStream in = new BufferedInputStream( new ProgressMonitorInputStream( new JFrame(),”Scanning”,new FileInputStream(dir.getSearchInputFile()))); 这完全正常,并弹出一个新的JFrame窗口,其中包含一个显示输入流进度的进度条。 有没有让ProgressMonitorInputstream更新另一个JFrame中存在的现有JProgressBar? 我尝试了各种方法,例如使用构造函数传递JProgressBar,或者尝试在参数中指定帧。 每次我尝试,我只是得到一个新的JFrame。 我错了吗? 任何投入将不胜感激。 谢谢

Runtime.getRuntime()。exec(“C:\ cygwin \ bin \ bash.exe”)没有输入读取

我正在尝试执行一个新进程并从Java中读取其输入流。 我已成功使用Runtime.getRuntime()。exec(String)来启动和接收来自多个进程的输入。 但是,当我尝试在某些其他进程上使用exec时,输入流的read方法会阻塞,并且看起来没有输入。 对于某些进程,可能导致输入流为空的原因是什么? 具体来说,我想知道为什么bash.exe没有输出任何东西。 我写了一个JUnit测试用例来演示这个问题: import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import junit.framework.TestCase; public class TestExec extends TestCase { public void testExec() throws IOException { List threads = new ArrayList(); // Create a process for each of the commands and make sure that // it outputs at least one line […]

Java的。 从FTP读取文件但不要整体下载

我需要从FTP读取CSV文件头。 由于这些文件非常庞大,我不需要下载它们。 有没有办法从FTP读取第一行CSV文件并中止连接?

Java资源关闭

我正在编写一个连接到网站并从中读取一行的应用程序。 我是这样做的: try{ URLConnection connection = new URL(“www.example.com”).openConnection(); BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream())); String response = rd.readLine(); rd.close(); }catch (Exception e) { //exception handling } 好吗? 我的意思是,我在最后一行关闭了BufferedReader,但是我没有关闭InputStreamReader。 我应该从connection.getInputStream创建一个独立的InputStreamReader,还是从独立的InputStreamReader创建一个BufferedReader,而不是关闭所有两个读者? 我认为最好将结束方法放在finally块中,如下所示: InputStreamReader isr = null; BufferedReader br = null; try{ URLConnection connection = new URL(“www.example.com”).openConnection(); isr = new InputStreamReader(connection.getInputStream()); br = new BufferedReader(isr); String response = […]

Java中的缓冲和无缓冲流

我正在阅读有关Java IO的一些文档,只是想确定我是否做到了这一点: 无缓冲输入流 :FileInputStream,InputStreamReader,FileReader 无缓冲输出流 :FileOutputStream,OutputStreamWriter,FileWriter 缓冲输出流 :PrintStream,PrintWriter 此外,我们还有BufferedInputStream,BufferedOutputStream,BufferedReader和BufferedWriter流,可将无缓冲的流转换为缓冲版本。 最后,我观察到了Character Streams,即。 InputStreamReader,FileReader,OutputStreamWriter,FileWriter,在将字节发送到流之前为字节维护内部字节缓冲区。 这个字节缓冲区不在我们的控制之下。 因此,对于Character Streams,缓冲是指用于存储进出程序的字符的高级字符缓冲区。 我说的一切都是正确的吗? PS – 我知道这个缓冲问题在某种程度上依赖于实现,但我只是想确认一下javadocs在说什么

Red5video流录制正在分手

最后我创建了一个流录像机Flash应用程序及其简单的Red5后端,但当然Red5再次开玩笑。 大多数情况下录制的video都已损坏,无法随意停止播放,播放播放器以及我也无法播放。 它为什么这样做? 我研究了互联网,发现了这个问题,但没有解决方案! 我尝试不录制video,而是将其切换为live并附加ffmpeg来执行脏作业,但自然ffmpeg无法连接red5输出上的以下错误消息: 执行调用时出错:Service:null方法:play Num Params:1 0:my_little_stream … blabla bla 在我尝试整合Xuggler之前我真正不想要的东西我问你,做什么,我可以以某种方式附加ffmpeg,或者我应该更改red5服务器中的配置..或者其他任何东西! 谢谢! 编辑 :我正在使用Red5 1.0 RC2 编辑#2 :我使用red5 1.0.0rc2服务器文件从trunk源编译了oflaDemo应用程序,然后使用简单的flex应用程序创建了一个实时流,以便尝试ffmpeg recorder工作。 现在它可以连接到red5,但结果是一样的! video似乎已损坏……

如何在Java Socket上超时读取?

我正在尝试从套接字读取项目,我注意到如果套接字流上没有任何内容,它将保留在读取并备份我的应用程序。 我想知道是否有一种方法可以设置读取超时或在套接字中没有任何时间后终止连接。

将二进制文件读入字符串

这一点显而易见,但我无法弄清楚。 我花了差不多一整天的时间。 我很乐意给那些可以照亮我的人买啤酒。 File file = new File(filePath); byte[] bytes = new byte[(int)file.length()]; DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath))); dataInputStream.readFully(bytes); dataInputStream.close(); return new String(bytes); 这是我的代码。 我看到字节数组大小不正常,但我无法找出合适的大小。 除此之外,内容也不正确。 似乎只有文字字符可以。 似乎从二进制文件中获取数据是一种真正的痛苦,我真的很沮丧。 还有一件事:文件内容不是文本,可以是图片,video或pdf。