我有cp1250
编码的源文件。所有这些文件都位于dirname
目录或其子目录中。我想通过添加它们的内容将它们合并到一个UTF-8
文件中。不幸的是,我在结果文件的开头得到了空行。
public static void processDir(String dirName, String resultFileName) {
try {
File resultFile = new File(resultFileName);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(resultFile), "utf-8"));
Files.walk(Paths.get(dirName)).filter(Files::isRegularFile).forEach((path) -> {
try {
Files.readAllLines(path, Charset.forName("Windows-1250")).stream().forEach((line) -> {
try {
bw.newLine();
bw.write(line);
} catch (Exception e) {
e.printStackTrace();
}
});
} catch (Exception e) {
e.printStackTrace();
}
});
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
原因是我不知道如何检测我的流中的第一个文件。
我想出了一个非常愚蠢的解决方案,它不依赖于溪流,所以它不能令人满意:
public static void processDir(String dirName, String resultFileName) {
try {
File resultFile = new File(resultFileName);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(resultFile), "utf-8"));
Files.walk(Paths.get(dirName)).filter(Files::isRegularFile).forEach((path) -> {
try {
Files.readAllLines(path, Charset.forName("Windows-1250")).stream().forEach((line) -> {
try {
if(resultFile.length() != 0){
bw.newLine();
}
bw.write(line);
if(resultFile.length() == 0){
bw.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
});
} catch (Exception e) {
e.printStackTrace();
}
});
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
您可以使用FlatMap
创建所有文件的所有行的流,然后再次使用FlatMap
将其与行分隔符交织,然后使用skip(1)
跳过前导分隔符,如下所示:
public static void processDir(String dirName, String resultFileName) {
try(BufferedWriter bw = Files.newBufferedWriter(Paths.get(resultFileName))) {
Files.walk(Paths.get(dirName)).filter(Files::isRegularFile)
.flatMap(path -> {
try {
return Files.lines(path, Charset.forName("Windows-1250"));
} catch (IOException e) {
throw new UncheckedIOException(e);
}
})
.flatMap(line -> Stream.of(System.lineSeparator(), line))
.skip(1)
.forEach(line -> {
try {
bw.write(line);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
});
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
通常,使用flatmap
+skip
组合可以帮助解决许多类似的问题。
还要注意files.newBufferedWriter
方法,它是创建BufferedWriter
的更简单方法。别忘了尝试资源。
我在试着写一个函数 匿名的名字。下面是一些输入和输出对的示例,让您了解它应该做什么: 该函数应该适用于由任意字符组成的名称。在实现此功能时,我有以下问题: 给定一个或,我如何计算出我必须使用多少个符文才能获得一个完整的字符,完整的意思是与该字符对应的所有修饰符和组合重音也被使用。例如,如果输入是(对应于字符串BC,其中δ表示为A和组合diaresis的组合),该函数应该返回2,因为前两个符文会产生
rank ▲ ✰ vote url 4 1266 285 929 url 用Python如何一个文件是否存在? 不用try:语句可以一个文件存在 如果不确定文件存不存在,可以这样做: import os.path os.path.isfile(fname)
问题内容: 我有一个JSON对象流,就像通过TCP或WebSockets的JSON- RPC一样。没有长度前缀或定界符,因为JSON是自定界的。因此,当我从流中读取内容时,可能会遇到如下所示的结果: 我需要一个一个地解析每个JSON对象。我无法使用JSON.parse做到这一点,因为它只会在末尾抛出无关数据的语法错误。 当然,在这个示例中,我可以逐行进行,但是我不能依赖像这样的空白。JSON-RP
最近,我已经完成了检测循环中第一个节点的算法,如下所述:- 注:本声明摘自以下网站:- http://javabypatel.blogspot.in/2015/12/detect-loop-in-linked-list.html 步骤1:找到循环后,两个指针都指向在循环内的交汇点的公共节点, 步骤2:现在,在它们之间移动一个指针(比如乌龟)到列表的头部,保持野兔指针在循环内的交汇点的相同位置。 步
本文向大家介绍如果做一个杯子的检测,你如何测试相关面试题,主要包含被问及如果做一个杯子的检测,你如何测试时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 功能 (1)水倒水杯容量的一半 (2)水倒规定的安全线 (4)水杯容量刻度与其他水杯一致 (5)盖子拧紧水倒不出来 (6)烫手验证 性能 (1)使用最大次数或时间 (2)掉地上不易损坏 (3)盖子拧到什么程度水倒不出来 (4)保温时间长 (
我试图在黑白道路上探测一个白色物体,让一辆自动遥控汽车在它周围行驶。除了路上的白色盒子,我什么都能探测到。 我所尝试的可以在我的代码示例中看到 我在寻找一种在障碍物周围画边界框的方法。问题是我不知道如何从剩下的盒子里取出这个盒子。这可能是因为长方体的轮廓和右边的线是相连的,这就是为什么边界框那么大。如果有人知道怎么做就好了。 点击这里查看结果 第一:输入图像 第二:适应阈值之后 第三:轮廓(粉色)