Tag: buffer

Java将InputStream的一部分复制到OutputStream

我有一个3236000字节的文件,我想从开始读取2936000并写入OutputStream InputStream is = new FileInputStream(file1); OutputStream os = new FileOutputStream(file2); AFunctionToCopy(is,os,0,2936000); /* a function or sourcecode to write input stream 0to2936000 bytes */ 我可以逐字节地读写,但是从缓冲读取开始慢(我认为)如何复制它?

三重缓冲区重闪烁

不应该将三重缓冲和Canvas作为被动渲染的最佳解决方案吗? 我刚刚编写了这个显示圆圈的java代码。 如果我将bufferstrategy留给3,它就会闪烁太多。 如果我把它调低到2或1就可以了。 也许我做错了什么? public void run(){ while (running){ update(); draw(); } } public void update(){ } public void draw(){ BufferStrategy bs = getBufferStrategy(); if (bs==null){ createBufferStrategy(3); return; } Graphics g = bs.getDrawGraphics(); g.setColor(Color.BLACK); g.fillOval(30, 30, 20, 20); g.dispose(); bs.show(); } 这是我放置Canvas的JFrame类 public class Game { public static void main (String [] args){ Pan […]

缓冲大文件; BufferedInputStream限制为2gb; 数组限制为2 ^ 31个字节

我正在顺序处理一个大文件,我想在内存中保留一大块,在64位系统上可以使用16gb ram。 一个快速而肮脏的方法是这样做,简单地将输入流包装到缓冲的输入流中,遗憾的是,这只给了我一个2gb的缓冲区。 我想在记忆中有更多的东西,我有什么替代品?

“还没有创建缓冲区”……同时创建缓冲区

我(我认为是)JFrame的直接BufferStrategy。 它是这样创建的: // Buffer container.createBufferStrategy(2); strategy = container.getBufferStrategy(); 但是,偶尔我会收到以下错误(指向前一个片段的第一行作为违规项目): java.lang.IllegalStateException:尚未创建缓冲区 这个错误很奇怪,因为它来来往往 – 有时会触发,有时不会触发。 我怀疑这意味着它是一个线程问题。 有没有人对这里可能发生的事情有任何指示? 我有点不知所措,因为我已经在尝试做Java希望我做的事情了! 编辑:完整跟踪: Exception in thread “main” java.lang.IllegalStateException: Buffers have not been created at sun.awt.windows.WComponentPeer.getBackBuffer(WComponentPeer.java:877) at java.awt.Component$FlipBufferStrategy.getBackBuffer(Component.java:3815) at java.awt.Component$FlipBufferStrategy.updateInternalBuffers(Component.java:3800) at java.awt.Component$FlipBufferStrategy.createBuffers(Component.java:3791) at java.awt.Component$FlipBufferStrategy.(Component.java:3730) at java.awt.Component$FlipSubRegionBufferStrategy.(Component.java:4253) at java.awt.Component.createBufferStrategy(Component.java:3612) at java.awt.Window.createBufferStrategy(Window.java:3015) at java.awt.Component.createBufferStrategy(Component.java:3536) at java.awt.Window.createBufferStrategy(Window.java:2990)

BufferedOutputStream如何实际工作在较低水平?

我理解BufferedOutputStream背后的理论。 字节被写入缓冲区数组直到它已满,然后写入(刷新)到底层流 – 这个想法是它比逐字节写入更快,因为OS调用更少。 但是,从查看BufferedOutputStream类和方法( BufferedOutputStream.java )的实现,似乎最终,缓冲区中的字节只是逐字节写入。 我认为情况是这样的: 在BufferedOutputStream.write(byte b [],int off,int len)中,它有行out.write(b,off,len)。 由于out是OutputStream的实例,而不是BufferedOutputStream,因此它调用OutputStream.write(byte [],int,int)。 这又使用for循环逐字节写入 请有人澄清实际发生的事情,以及它如何更快?

具有显着变化长度的输入的最佳StringBuffer初始容量是多少?

大家下午好,我正在使用java.lang.StringBuilder存储一些字符。 我不知道我要提前存储多少个角色,除了: 60%的时间,它只是(确切地)7个字符 39%的时间,(大约)3500个字符 1%的时间,大约是20k个字符 我们如何计算应该使用的最佳初始缓冲区长度? 目前我正在使用new java.lang.StringBuilder(4000)但这只是因为我以前懒得思考。

Java的System.out.print()会永远缓冲到println()吗?

我今天无意中听到有关System.out.print()的争论。 有人声称,由于print()不包括终止\n ,它写入的缓冲区最终将填满并开始丢失数据。 另一个人声称他们一直在使用System.out.print()来处理他们所有的Java程序,并且从未遇到过这个问题。 第一个人是对的吗? 如果stdout已满, System.out.print()可以开始阻止或删除数据? 是否有导致此问题的代码示例?

创建新的Bufferstrategy时出现非法状态exception

当我试图找出如何使用buffers策略时,总体上只是改进了我编写代码和清理的方法。 当我运行以下代码时,我在“createBufferStrategy(3)”时出错 package Game1Test; import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferStrategy; import java.io.IOException; import javax.swing.*; public class Base extends Canvas implements Runnable{ private static final long serialVersionUID = 1L; private boolean running = false; int ticks = 0; public Base(JFrame f) { setSize(f.getWidth(),f.getHeight()); start(); } public void start(){ running = true; new Thread(this).start(); } […]