Tag: nio2

按最大行分割非常大的文本文件

我想将包含字符串的大文件拆分成一组新的(较小的)文件并尝试使用nio2。 我不想将整个文件加载到内存中,所以我尝试使用BufferedReader。 较小的文本文件应受文本行数的限制。 该解决方案有效,但我想询问是否有人通过使用java 8(也许lamdas with stream() – api?)和nio2知道一个具有更好性能的解决方案: public void splitTextFiles(Path bigFile, int maxRows) throws IOException{ int i = 1; try(BufferedReader reader = Files.newBufferedReader(bigFile)){ String line = null; int lineNum = 1; Path splitFile = Paths.get(i + “split.txt”); BufferedWriter writer = Files.newBufferedWriter(splitFile, StandardOpenOption.CREATE); while ((line = reader.readLine()) != null) { if(lineNum > maxRows){ writer.close(); […]

相当于InputStream或Reader的Files.readAllLines()?

我有一个文件,我通过以下方法读入List: List doc = java.nio.file.Files.readAllLines(new File(“/path/to/src/resources/citylist.csv”).toPath(), StandardCharsets.UTF_8); 是否有任何好的(单行)Java 7/8 / nio2方法可以使用可执行Jar内的文件(并且可能必须使用InputStream读取)来实现相同的function? 也许是一种通过类加载器打开InputStream的方法,然后以某种方式强制/转换/将其包装到Path对象中? 或者是一些包含与File.readAllLines(…)等效的InputStream或Reader的新子类? 我知道我可以用半页代码中的传统方式,或者通过一些外部库来实现……但在此之前,我想确保最近发布的Java不能“开箱即用” ”。

Java7 nio2的任何可用的内存中FileSystem实现?

我一直在寻找内存中的nio2 FileSystem实现,这将使我能够更轻松地测试我的IO相关代码。 在Win32FileSystem ,Java只提供(在我的JDK中) Win32FileSystem和ZipFileSystem 。 似乎ShrinkWrap有类似的东西,但似乎主要处理ZIP文件系统或任何。 我猜你们有些人已经在你自己的项目中加入了新的nio FileSystem IO,可以帮助我吗? 谢谢

合并大文件而不将整个文件加载到内存中?

我想将包含字符串的大文件合并到一个文件中,并尝试使用nio2。 我不想将整个文件加载到内存中,所以我尝试使用BufferedReader: public void mergeFiles(filesToBeMerged) throws IOException{ Path mergedFile = Paths.get(“mergedFile”); Files.createFile(mergedFile); List _filesToBeMerged = filesToBeMerged; try (BufferedWriter writer = Files.newBufferedWriter(mergedFile,StandardOpenOption.APPEND)) { for (Path file : _filesToBeMerged) { // this does not work as write()-method does not accept a BufferedReader writer.append(Files.newBufferedReader(file)); } } catch (IOException e) { System.err.println(e); } } 我尝试了这个,这个工作,hower,字符串的格式(例如新行等不会被复制到合并文件): … try (BufferedWriter writer […]

使用Java 6中的Java 7 SDKfunction

我有兴趣使用Java 7 SDK中的一些NIO2function(特别是文件系统观察者 ),但是我不想为Java 7编译我的类并排除Java 6运行时。 主要是因为我希望保持与Mac OS X的兼容性,还因为我不想强迫我的用户升级。 这可能吗? 最好的方法是什么? 任何链接或示例? 以下是我可以想象的一些方法:使用不同的编译器编译类文件并根据Java版本动态加载它? 或者也许使用reflection? 或者也许只有Java 7的编译器设置来生成Java 6兼容的类? 我正在寻找一个不会变成丑陋混乱的解决方案:),所以理想情况下我可以编写两个接口实现,一个使用新function,一个不使用,然后动态选择一个而不必进行reflection调用到处都是。

找到FileStore的目录

我正试图找到一种方法来检测闪存驱动器何时插入我的计算机。 到目前为止,我发现的解决方案是轮询FileSystem#getFileStores进行更改。 这确实告诉我何时插入了闪存驱动器,但据我所知,没有办法检索它的位置。 FileStore#type和FileStore#name似乎都非常不可靠,因为它们的返回值是特定于实现的,但它们似乎是唯一可能返回任何可能有助于查找FileStore目录的相关信息的方法。 考虑到这一点,以下代码: public class Test { public static void main(String[] args) throws IOException { for (FileStore store : FileSystems.getDefault().getFileStores()) { System.out.println(store); System.out.println(“\t” + store.name()); System.out.println(“\t” + store.type()); System.out.println(); } } } 给我这个输出: / (/dev/sda5) /dev/sda5 ext4 /* snip */ /media/TI103426W0D (/dev/sda2) /dev/sda2 fuseblk /media/flashdrive (/dev/sdb1) /dev/sdb1 vfat 事实certificate, FileStore#type返回驱动器的格式, FileStore#type返回驱动器的设备文件的位置。 据我所知,唯一具有驱动器位置的方法是toString方法,但从中提取路径名称似乎很危险,因为我不确定该特定解决方案在其他操作系统上的表现如何和Java的未来版本。 有没有我在这里缺少的东西,或者纯粹用Java是不可能的? […]

如何用Java 7中的nio替换File.listFiles(FileFilterfilter)?

我有一些用Java 6编写的文件I / 0遍历代码,试图将它移动到Java 7中的新I / O但我找不到任何替代这种东西。 File[] files = dir.listFiles(AudioFileFilter.getInstance()); 即,没有办法只过滤路径文件,它返回文件列表,所以我必须将每个文件转换为路径(file.toPath),如果我想限制在它调用的方法中使用File,这似乎相当费力。 我确实看过FileVisitor,但这似乎不允许你控制树的遍历方式,所以我认为它不适合我。 那么Java 7中的Path for File有多少替代品呢?