使用Apache FileUtils.copyDirectory(...)的进度条。
有人知道为Apache的FileUtils.copyDirectory(File src, File dst)实施进度栏吗?我在 javadocs 和API.似乎是处理批处理磁盘操作的常见用例,所以我不确定我是否错过了明显的东西. 解决方案 我想您必须自己做.我看到了这种直接解决方案: 查找您将要复制的所有文件,并首先计算数量或总文件大小(取决于您的进度栏应测量的内容) 使用 其他解决方案 对于任何有兴趣的人,我通过从fileutils和导致它的两种方法中应对doCopyFile方法来做到这一点.然后,我将它们粘贴到一个新类中,以便我可以编辑方法,而不仅仅是使用固定的Fileutils方法. 然后我更改了doCopyFile方法的这一部分: pos += output.transferFrom(input, pos, count); 对此:(每次清空缓冲区时更新进度栏,而不是最好的方法) //Split into into deceleratio
4 2024-02-28
编程技术问答社区
用Java删除一个文件的问题(apache commons io)。
我正在通过JNI调用C ++方法,该方法创建两个文件.给定目录中的文本日志文件和PDF文件.我想在执行JNI方法之前删除这些文件(如果存在). 我正在使用apache commons.io(fileutils.forcedelete(file file)).执行时,我会得到一个IOException: java.io.IOException: Unable to delete file: D:\Folder\file.log 我在用file.canwrite()方法启动删除方法之前先检查文件的可写状态.它返回文件和parent dir. 您是否知道为什么我会在文件上删除问题?据我所知,在方法完成后,创建文件的C ++方法正在关闭或解锁.无论如何,我无法访问C ++代码的源代码,因此我无法检查是否确实是这种情况或修改代码. 谢谢,Marco 解决方案 几乎可以肯定地被另一个过程锁定.如果这是另一个在操作系统级别上锁定的过程(例如,您将文件打开为文本编辑器
0 2024-02-28
编程技术问答社区
使用Apache commons-io IOUtils.closeQuietly是否安全?
是这个代码 BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt")); try { bw.write("test"); } finally { IOUtils.closeQuietly(bw); } 安全是否安全?据我所知,当我们关闭缓冲作者时,它将其缓冲区冲入基础流,并且由于错误而可能失败.但是ioutils.closequietly API说,任何例外都将被忽略. 由于ioutils.closequietly,数据丢失是否可能会引起人们的注意? 解决方案 代码应该像closeQuietly()的Javadoc一样: BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter("test.txt")); bw.write
0 2024-02-28
编程技术问答社区
使用Robospice和Android Studio的Commons-Io重复条目错误
我已经在以下问题上工作了几个小时,但没有提出解决我的问题的方法.我已经尝试了以下修复程序( android Studio更新至1.0损坏多端和 gradle插件V0后重复zip输入.13.1 )但是他们俩都没有工作. 尝试构建程序时会遇到以下错误: Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: org/apache/commons/io/CopyUtils.class 错误似乎表明Commons-io在构建过程中两次包括在内 我正在使用Android Studio和Gradle来包括多个Robospice依赖性.这是我的gradle构建文件的依赖项部分: dependencies { compile 'com.android.support:multidex:1.0.1'
2 2024-02-18
编程技术问答社区
当目的地是网络路径时,FileUtils.copyFile()不能创建文件(在windows下)。
我正在使用apache common的 fileutils.copyfile()将本地磁盘上的文件复制到网络共享位置.共享文件夹已经存在,并且运行该应用程序的用户已允许它. fileutils.copyfile()执行,没有例外.但是,该文件实际上并未创建. File sourceFile = new File ("C:\\sourcefile.txt"); File destinationFile = new File("\\data-server\\my_share\\dest.txt"); // false System.out.println("Before copy, file exists? " + destinationFile.exists()); FileUtils.copyFile(sourceFile, destinationFile); // true System.out.println("After copy, file exists? " + dest
4 2023-12-06
编程技术问答社区
Java:使用Apache commons IO 2.4在子目录中递归列出文件
我使用以下代码列出了root Directory及其子目录中的扩展名为" .xls"的文件.我正在检查collection的大小,但它给出了0.我看不出代码中可能是错误的.你能帮我吗? public static void main(String[] args) throws IOException { File rootDir = new File(args[0]); Collection files = FileUtils.listFiles(rootDir, new RegexFileFilter("[a-zA-Z].xls"), DirectoryFileFilter.DIRECTORY); System.out.println("collection size:" + files.size()); } 解决方案 我发现了这项工作: final String[] SUFFIX = {"xls"};
2 2023-10-04
编程技术问答社区
通过SSH的Java文件命令
我正在创建一个java程序,该程序在SSH上做很多. 在我的程序中,我需要能够在远程主机上运行诸如" ListFiles()"之类的方法.我还需要能够从Apache Commons IO运行几个命令(我正在使用" Fileutils"类).我已经看过诸如JSCH之类的程序,但是在提起操作和转移时,它们都没有足够的灵活性. 任何人都可以建议解决我的问题的替代程序或方法吗? 解决方案 相反,JSCH确实支持文件传输:对于在远程主机上列出文件时,您不能只使用Apache Commons Fileutil运行Java命令.您要做的就是在远程操作系统上远程执行命令 - 相当于通过命令行SSH执行此操作: ssh remotehost ls /path/to/remote/dir 您选择的任何SSH库都是如此,而不仅仅是JSCH. 因此,就jsch而言,这将是(假设您已经设置并连接了JSCH SSH会话): ChannelExec channel= (Cha
8 2023-09-27
编程技术问答社区
让FileAlterationObserver观察远程目录
如何制作FileAlterationObserver观察一个远程目录? 这可以接受String路径或Java File.这两种情况都将在本地上下文中寻找目录.我在远程服务器文件系统中有一个目录. 如果有人告诉我如何创建一个涉及远程目录中文件的新对象. 示例: File file = new File("remote directory path"); 解决方案 您不能. File对象不能参考SFTP文件. 没有办法让SFTP服务器在远程文件/目录中的更改中通知您(协议本身没有机制). 您所能做的就是使用JSCH(或其他)SFTP接口自行检查常规间隔更改.
4 2023-08-31
编程技术问答社区
嘲弄apache.commons.io.IOUtils类
我需要嘲笑apache.commons.io.ioutils类的tobytearray(). 我有一个像THS这样的代码段: PowerMockito.mockStatic(IOUtils.class); PowerMockito.when(IOUtils.toByteArray(any(InputStream.class))).thenReturn(mockByteArray); 但是我从org.apache.commons.io.ioutils.copylarge()函数中获取NullPoInterException. 解决方案 看起来该方法未被模拟,而实际方法则称为. PowerMock使用可以模拟静态方法的特殊测试跑者. put @RunWith(PowerMockRunner.class)和@PrepareForTest(IOUtils.class)在您的测试类上注释. 请参见示例,请参见 docs
34 2023-06-21
编程技术问答社区
Apache Commons IO文件监控与JDK WatchService的比较
我需要开发一个应用程序,该应用程序将在预定义目录中创建文件后立即处理CSV文件.预计将大量传入文件. 我已经在生产中看到了使用Apache Commons IO文件监视的应用程序.它运行良好.我已经看到它每天处理多达2100万个文件.似乎Apache Commons IO文件监视调查目录并执行ListFiles处理文件. 我的问题: JDK WatchService是否是Apache Commons IO文件监视的好选择?有人知道有任何利弊吗? 解决方案 自从我问这个问题以来,我对此事有了更多的了解.因此,试图为那些可能有类似问题的人回答. Apache Commons监视使用具有可配置轮询间隔的轮询机制.在每个民意调查中,它都会调用文件类的ListFiles()方法,并与上一个迭代的ListFiles()输出进行比较,以识别文件创建,修改和删除.该算法足够强大,我从未见过任何错过.它甚至可以与大量文件一起使用.但是,由于它在每次迭代中都会进行轮询和调用List
40 2023-06-06
编程技术问答社区
在Java中有效地从URL中读取文件为byte[]。
我正在尝试找到一种更有效的方法,用于从远程URL读取文件并将其保存到字节数组中.这是我目前拥有的: private byte[] fetchRemoteFile(String location) throws Exception { URL url = new URL(location); InputStream is = null; byte[] bytes = null; try { is = url.openStream (); bytes = IOUtils.toByteArray(is); } catch (IOException e) { //handle errors } finally { if (is != null) is.close(); } return bytes; } 如您所见,我当前将URL传递到该方法中,其中它使用输入式对象在文件的字节中读取.此方法使用apache common
10 2023-05-12
编程技术问答社区
为什么我不能在Java中使用Commons IO FileUtils从/proc中读取数据,而使用普通的FileInputStream就能做到?
我使用我的Java方法CopyFiles()(下面的源代码)读取/proc/%d/stat文件的问题. 我发现使用类似ReadProc()方法的解决方法. 现在,我想知道有什么问题.创建了输出文件,但是每个文件都有0个字节(在/proc/所有文件为0个字节,因为它不是标准文件系统). Fileutils来自Apache Commons IO库. 我尝试使用java.nio进行相同的操作 - 再次,ioexception被抛出,每个文件都是错误的. 我删除了有关解析异常等的代码的某个部分. 为什么与fileInputStream一起使用,而与FileUtils.copyFile()? 不使用 public void copyFiles() { final File dir = new File("/proc"); final String[] filedirArray = dir.list(); long counter = 0;
18 2023-03-09
编程技术问答社区
从转换时,图像看起来不太好。docx到pdf
i转换 .docx 文件为 .pdf 文件,文本转换正常,但是 .docx 文件中的图像不是出现,相反,它表示为某些特殊字符,以下是我的代码: import com.lowagie.text.Document; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.PdfWriter; import java.io.File; import java.io.FileOutputStream; public class PDFConversion { /** * 14. This method is used to convert the given file to a PDF format 15. * * @param inputFile * - Name and the path of the f
22 2022-12-29
编程技术问答社区
java.io.IOException: request to write '' bytes exceeds size in header of '' bytes for entry ' '
我正在使用GZIPOutputStream创建tar.Gzip文件,并且我添加了另一种逻辑,如果在压缩文件时捕获了任何例外,那么我的代码将重试3次. 当我投掷IOException测试我的重试逻辑时,它在以下例外抛出: java.io.IOException: request to write '4096' bytes exceeds size in header of '2644' bytes for entry 'Alldbtypes' 我在行中得到例外:org.apache.commons.io.IOUtils.copyLarge(inputStream, tarStream); private class CompressionStream extends GZIPOutputStream { // Use compression levels from the deflator class public CompressionStream(O
340 2022-12-24
编程技术问答社区
如何调试NoSuchMethodError异常?
我正在运行以下代码 package test.commons; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; public class Try_FileUtilsWrite { public static void main(String[] args) throws IOException { System.out.println(FileUtils.class.getClassLoader()); FileUtils.write(new File("output.txt"), "Hello world"); } } 并获得 Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.io.Fi
14 2022-12-23
编程技术问答社区
递归地仅查找具有fileutil的目录。列表文件
我想在目录下收集所有文件的列表,特别是包括子目录.我喜欢自己不做事,所以我使用的是Apache Commons IO的FileUtils.listFiles.所以我有类似的东西: import java.io.File; import java.util.Collection; import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefilter.TrueFileFilter; public class TestListFiles { public static void main(String[] args) { Collection found = FileUtils.listFiles(new File("foo"), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE); for (Fil
16 2022-12-22
编程技术问答社区
在使用commons-io的IOUtils.toString(input)之后,我是否需要手动关闭输入流?
commons-io 具有IOUtils.toString(inputStream)方法,可以从输入流读取所有内容: InputStream input = getInputStream(); String content = IOUtils.toString(input); 我的问题是我可以在使用后手动关闭输入流吗? 我以为Ioutils可能会关闭它,因为它已经读取了所有内容,但是在源代码中找不到. . 解决方案 在可能的情况下,此类中的方法不会冲洗或关闭流.这是为了避免对流的起源和进一步使用做出不可存储的假设.因此,呼叫者仍负责使用后关闭流.
152 2022-12-22
编程技术问答社区
Apache Commons IO Tailer示例
我正在研究一个监视程序,该程序读取/var/log/auth.log文件.我正在使用apache Commons io >类实时读取文件.首先,我想在简单文件上测试实时读取部分,并在控制台行中手动输入一些代码.这是我的代码: public class Main { public static void main(String[] args) { TailerListener listener = new MyListener(); Tailer tailer = Tailer.create(new File("log.txt"), listener, 500); while(true) { } } } public class MyListener extends TailerListenerAdapter { @Override public void handle(String
20 2022-12-21
编程技术问答社区
删除目录(但不是目录)中的所有文件-一行程序解决方案
我想删除ABC目录中的所有文件. 我尝试使用FileUtils.deleteDirectory(new File("C:/test/ABC/"));> FileUtils.deleteDirectory(new File("C:/test/ABC/"));也删除了文件夹. 是否有一个衬里解决方案,我可以在目录中删除文件,但不是目录? 解决方案 import org.apache.commons.io.FileUtils; FileUtils.cleanDirectory(directory); 同一文件中有此方法可用.这还将递归删除其下面的所有子文件夹和文件. docs: org.apache.commons.io.FileUtils.cleanDirectory 其他解决方案 您的意思是吗? for(File file: dir.listFiles()) if (!file.isDirectory()) fil
10 2022-12-19
编程技术问答社区
在Java中读取文本文件中的特定行
是否有任何方法可以从文本文件中读取特定行?在API或Apache Commons中. 类似: String readLine(File file, int lineNumber) 我同意实施是微不足道的,但是如果文件很大,则不是很有效. 解决方案 String line = FileUtils.readLines(file).get(lineNumber); 会这样做,但仍然有效率问题. 另外,您可以使用: LineIterator it = IOUtils.lineIterator( new BufferedReader(new FileReader("file.txt"))); for (int lineNumber = 0; it.hasNext(); lineNumber++) { String line = (String) it.next(); if (lineNumber == expectedLineNu
34 2022-12-18
编程技术问答社区