草庐IT

java - 为什么用Java下载文件速度这么慢

我写了简单的JavaDownloader,但速度有些问题。一开始,速度还可以——就像我用浏览器下载这个文件一样。但过了一会儿,速度下降了很多,并且每两秒变化一次——从42kb/s到64kb/s,从64kb/s到42kb/s。我的代码:InputStreamis=null;FileOutputStreamos=null;os=newFileOutputStream(...);URLu=newURL(...);URLConnectionuc=u.openConnection();is=uc.getInputStream();finalbyte[]buf=newbyte[1024];for(

java - Socket.getInputStream().read(byte[]) 是否保证在至少读取一些数据后不会阻塞?

类InputStream的JavaDoc说明如下:Readsuptolenbytesofdatafromtheinputstreamintoanarrayofbytes.Anattemptismadetoreadasmanyaslenbytes,butasmallernumbermayberead.Thenumberofbytesactuallyreadisreturnedasaninteger.Thismethodblocksuntilinputdataisavailable,endoffileisdetected,oranexceptionisthrown.这也符合我的经验。例如,

java - 在 java 中,如何将 java.awt.image.BufferedImage 写入 8 位 png 文件?

我正在尝试从java.awt.image.BufferedImage中写出一个png文件。一切正常,但生成的png是一个32位文件。有没有办法使png文件成为8位?该图像是灰度图像,但我确实需要透明度,因为这是一张叠加图像。我使用的是java6,我更愿意返回一个OutputStream,这样我就可以让调用类处理将文件写出到磁盘/数据库的问题。这是代码的相关部分:publicstaticByteArrayOutputStreamcreateImage(InputStreamoriginalStream)throwsIOException{ByteArrayOutputStreamoStr

文件上传失败: java.io.IOException: The temporary upload location [...] is not valid

 异常信息Couldnotparsemultipartservletrequest;nestedexceptionisjava.io.IOException:Thetemporaryuploadlocation[/tmp/tomcat.7215026991249819883.8087/work/Tomcat/localhost/ROOT]isnotvalidorg.springframework.web.multipart.MultipartException:Couldnotparsemultipartservletrequest;nestedexceptionisjava.io.IOExc

java - 创建相关 java.io.File 的安全方法

如何以安全的方式创建相对于父文件夹的java.io.File实例,即防止恶意攻击者突破父文件夹。例子:Stringpath=request.getParameter("path");Filefile=newFile(folder,path);这是不安全的,因为攻击者可能会向我发送一个../../../etc/passwd作为path。我如何“清理”这样的路径? 最佳答案 看完其他答案后,我想到了这个解决方案:publicstaticbooleanisParent(Fileparent,Filefile){Filef;try{pare

java - 用于创建大型 CSV 文件的 Java IO 最佳实践

您好,我需要创建几个大型CSV文件,整个文件的数量可能是200万。所以我想知道如何有效地做到这一点..因此我想到了几个问题1。当我们通过BufferedWriter写入文件时,我们应该多久刷新一次?但是我认为bufferedWriter维护自己的缓冲区,一旦缓冲区已满,它就会自动刷新它,如果是这种情况,那么为什么还有flush方法呢??因为我要创建的文件会很大。所以当我开始写文件时,文件会自动提交到磁盘吗??(在调用writer.close()之前)或整个文件保留在主内存中直到我关闭writer?。通过提交我的意思是已经写入的部分没有任何部分在主内存中,即它已准备好进行GC

Java 解压缩带有文件夹 FileNotFoundexception 的压缩存档

我正在尝试用java解压缩一个存档,其中包含存档中的文件夹和文件。问题是每当它到达文件夹并尝试解压缩它们时都会抛出FNF异常。我的解压代码如下:privatevoidunZipUpdate(StringpathToUpdateZip,StringdestinationPath){byte[]byteBuffer=newbyte[1024];try{ZipInputStreaminZip=newZipInputStream(newFileInputStream(pathToUpdateZip));ZipEntryinZipEntry=inZip.getNextEntry();while(

java - 在 Java 中连接两个大文件(超过 1.5GB)的最有效(最快)的方法是什么?

我使用了此处的技术并在70秒内连接了两个1.5GB的文件。http://nadeausoftware.com/articles/2008/02/java_tip_how_read_files_quickly我的代码涉及使用具有内存映射的FileChannels和具有8KB缓冲区大小的ByteBuffers。我怎样才能提高这个速度?Filefile=newFile(binDirectory+"/donjon.avi");FileoFile=newFile(binDirectory+"/donjon2.avi");FileInputStreamis=newFileInputStream(f

java - FileNotFound(访问被拒绝)java.io 上的异常

为什么我在运行这个程序时会出现这个错误?这发生在随机迭代之后。通常在第8000次迭代之后。publicstaticvoidmain(String[]args){FileWriterwriter=null;try{for(inti=0;i异常发生后,文件不存在。这意味着它正在删除,但FIleWriter会尝试在此之前获取锁,即使它不是多线程程序。是因为Windows删除文件的速度不够快,因此FileWriter没有获得锁定吗?如果是这样,那么file.delete()方法会在Windows实际删除它之前返回吗?我该如何解决它,因为我在对我的应用程序进行负载测试时遇到了类似的问题。编辑1:

java - 通过 Java 客户端将文件上传到 CKAN/datahub.io 中的数据集

我正在测试通过API的Java客户端将文件上传到CKAN/datahub.io上的数据集。publicStringuploadFile()throwsCKANException{Stringreturned_json=this._connection.MultiPartPost("","");System.out.println("r:"+returned_json);returnreturned_json;}和protectedStringMultiPartPost(Stringpath,Stringdata)throwsCKANException{URLurl=null;try{u