Tag: file io

如何为Swing JFileChooser设置默认文件名?

我想在此JFileChooser文本框中将默认文件名设置为Untitled.txt 。 我可以设置吗?

在Java中以特定速率读取文件

是否有关于如何以特定速率读取长文件的文章/算法? 假设我不想在发出读取时传递10 KB /秒。

如何在Perl中设置文件读取缓冲区大小以针对大型文件进行优化?

据我所知,Java和Perl在读取文件时很难找到一个适合所有默认缓冲区大小的内容,但我发现他们的选择越来越过时,并且在更改默认选择时遇到问题Perl的。 在Perl的情况下,我认为默认情况下使用8K缓冲区,类似于Java的选择,我找不到使用perldoc网站搜索引擎(真的谷歌)的参考如何增加默认文件输入缓冲区大小, 64K。 从上面的链接,以显示8K缓冲区如何不缩放: 如果行通常每个约有60个字符,则10,000行文件中包含大约610,000个字符。 使用缓冲逐行读取文件只需要75次系统调用和75次磁盘等待,而不是10,001次。 因此,对于每行60个字符(包括末尾的换行符)的50,000,000行文件,使用8K缓冲区,它将进行366211次系统调用以读取2.8GiB文件。 顺便说一句,您可以通过在任务管理器进程列表中查看磁盘i / o读取增量(在Windows中至少,在* nix中显示同样的东西,我确定)作为您的Perl程序来确认此行为在文本文件中读取需要10分钟:) 有人问过关于在perlmonks上增加Perl输入缓冲区大小的问题,有人回答说你可以增加“$ /”的大小,从而增加缓冲区大小,但是从perldoc: 将$ /设置为对整数的引用,包含整数的标量或可转换为整数的标量将尝试读取记录而不是行,最大记录大小为引用的整数。 所以我假设这实际上并没有增加Perl在使用典型时从磁盘读取的缓冲区大小: while() { #do something with $_ here … } “逐行”成语。 现在它可能是一个不同的“一次读取一条记录,然后将其解析成行”,上述代码的版本通常会更快,并且绕过标准习惯用语的底层问题而无法更改默认缓冲区大小(如果确实不可能),因为您可以将“记录大小”设置为您想要的任何内容,然后将每条记录解析为单独的行,并希望 Perl做正确的事情并最终为每条记录执行一次系统调用,但它增加复杂性,我真正想做的就是通过将上面示例中使用的缓冲区增加到相当大的大小(例如64K),甚至将缓冲区大小调整到最佳大小以便使用测试进行长读取来获得轻松的性能提升我的系统上的脚本,无需额外的麻烦。 对于增加缓冲区大小的直接支持,Java中的情况要好得多。 在Java中,我相信java.io.BufferedReader使用的当前默认缓冲区大小也是8192字节,尽管JDK文档中的最新引用是模棱两可的,例如,1.5文档仅说: 可以指定缓冲区大小,或者可以接受默认大小。 对于大多数用途,默认值足够大。 幸运的是,您不必相信JDK开发人员可以为您的应用程序做出正确的决定,并且可以设置自己的缓冲区大小(在此示例中为64K): import java.io.BufferedReader; […] reader = new BufferedReader(new InputStreamReader(fileInputStream, “UTF-8”), 65536); […] while (true) { String line = reader.readLine(); if (line == null) […]

将选择列数据从文本文件读入Java中的列表

有人可以帮助我将文本文件中的选择性数据列读入列表中。 例如:如果文本文件数据如下 ————- id name age 01 ron 21 02 harry 12 03 tom 23 04 jerry 25 ————- 从上面的数据,如果我需要使用java中的列表收集列“名称”并打印它..

有没有办法在一个Java8流中读取两个或多个文件?

我喜欢新的Java8 StreamAPI,并且不仅要将它用于一个文件。 通常,我使用此代码: Stream lines = Files.lines(Paths.get(“/somepathtofile”)); 但如果可能的话,如何在一个流中读取两个文件?

从文件中读取最后一个字节并截断为大小

我有一大堆文件,所有文件都应该(应该是)附加到文件末尾的标记字符(1个字节)。 如何读取最后一个字节(以确保它是字符)并将其截断为大小(即:删除字符)? 我知道我可以阅读整个内容,然后将它全部写回去减去最后一个字符,但必须有一种方法来获取特定的字节,不是吗?

愿FileInputStream.available愚蠢吗?

这个FileInputStream.available()javadoc说: 返回可以从此输入流中读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 下一次调用可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会阻塞,但可以读取或跳过更少的字节。 在某些情况下,非阻塞读取(或跳过)可能在速度很慢时似乎被阻止,例如在通过慢速网络读取大型文件时。 我不确定在这张支票中是否: if (new FileInputStream(xmlFile).available() == 0) 我可以依赖那些空文件总是返回零吗? – 谢谢@SB,他没有完全回答这个问题,但却是第一个提供最佳选择的人: 如果xmlFile是java.io.File对象,则可以使用length()方法获取其大小。

强制删除文件夹中的所有文件

我一直在使用一段特定的代码来删除文件夹中的文件,但事实certificate它很成问题,因为我可能忘了关闭一两个InputStream。 我的代码是如此之大,以至于我无法看到所有未关闭的输入流。 有没有办法删除文件是否有一个打开的InputStream? 这是我一直在使用的代码片段; File fin = new File(“C:/ABC Statements final/”); File[] finlist = fin.listFiles(); for (int n = 0; n < finlist.length; n++) { if (finlist[n].isFile()) { System.gc(); Thread.sleep(2000); finlist[n].delete(); } } 我编辑了代码。 这个版本有效。

删除java中的临时文件

我在java中创建临时文件,但我无法删除它。 这是我写的代码: temp = File.createTempFile(“temp”, “.txt”); temp.deleteOnExit(); fileoutput = new FileWriter(temp); buffout = new BufferedWriter(fileoutput);

以表格格式将数据写入文本文件

到目前为止我有这个: File dir = new File(“C:\\Users\\User\\Desktop\\dir\\dir1\\dir2); dir.mkdirs(); File file = new File(dir, “filename.txt”); FileWriter archivo = new FileWriter(file); archivo.write(String.format(“%20s %20s”, “column 1”, “column 2 \r\n”)); archivo.write(String.format(“%20s %20s”, “data 1”, “data 2”)); archivo.flush(); archivo.close(); 然而。 文件输出如下所示: 我完全不喜欢。 如何为文本文件的输出创建更好的表格格式? 非常感谢任何帮助。 提前致谢! 编辑:修复! 而且,而不是看起来像 column 1 column 2 data 1 data 2 我怎么能让它看起来像这样: column 1 column 2 data […]