Java 导航目录结构并对每个处理过的文件进行唯一命名
我有一个目录结构,其形式是Java 导航目录结构并对每个处理过的文件进行唯一命名,java,outputstream,Java,Outputstream,我有一个目录结构,其形式是start/三个/*文件* 我的目标是构造这个程序,使它能够自主地导航我的目录结构,获取每个文件,然后处理它,这似乎是正确的 但我还需要将输出写入具有唯一名称的新文件,即应处理名为00001.txt的文件,并将结果写入00001_output.txt 我认为我正确地实现了这一点,但显然不是 我在哪里迷路了 String dirStart = "/home/data/"; Path root = Paths.get(dirStart); Fil
start
/
/两个//strong>三个/*文件*
我的目标是构造这个程序,使它能够自主地导航我的目录结构,获取每个文件,然后处理它,这似乎是正确的
但我还需要将输出写入具有唯一名称的新文件,即应处理名为00001.txt
的文件,并将结果写入00001_output.txt
我认为我正确地实现了这一点,但显然不是
我在哪里迷路了
String dirStart = "/home/data/";
Path root = Paths.get(dirStart);
Files.walkFileTree(root.toAbsolutePath().normalize(), new SimpleFileVisitor<Path>()
{
@Override
public FileVisitResult visitFile(Path file, java.nio.file.attribute.BasicFileAttributes attrs) throws IOException
{
try(InputStream inputStream = Files.newInputStream(file);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)))
{
// CHANGE OUTPUT TO NEW FILE
String print_file = file.getFileName().toString();
String fileNameWithOutExt = FilenameUtils.removeExtension(print_file);
System.out.println(fileNameWithOutExt);
PrintStream out = new PrintStream(new FileOutputStream( fileNameWithOutExt + "_output.txt" ) );
System.setOut(out);
// SOUP PART
StringBuilder sb = new StringBuilder();
String line = bufferedReader.readLine();
while (line != null)
{
sb.append(line);
sb.append(System.lineSeparator());
line = bufferedReader.readLine();
}
String everything = sb.toString();
Document doc = Jsoup.parse(everything);
String link = doc.select("block.full_text").text();
System.out.println(link);
}
catch (IOException e)
{
e.printStackTrace();
}
return FileVisitResult.CONTINUE;
}
});
String dirStart=“/home/data/”;
路径根=Path.get(dirStart);
Files.walkFileTree(root.toabsolutionPath().normalize(),新的SimpleFileVisitor())
{
@凌驾
公共文件VisitResult visitFile(路径文件,java.nio.file.attribute.BasicFileAttributes attrs)引发IOException
{
try(InputStream-InputStream=Files.newInputStream(file);
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream)))
{
//将输出更改为新文件
字符串print_file=file.getFileName().toString();
字符串fileNameWithOutExt=FilenameUtils.removeExtension(打印文件);
System.out.println(fileNameWithOutExt);
PrintStream out=新的PrintStream(新的FileOutputStream(fileNameWithOutExt+“_output.txt”);
系统放样;
//汤部
StringBuilder sb=新的StringBuilder();
String line=bufferedReader.readLine();
while(行!=null)
{
某人附加(行);
sb.append(System.lineSeparator());
line=bufferedReader.readLine();
}
String everything=sb.toString();
Document doc=Jsoup.parse(所有内容);
字符串链接=doc.select(“block.full_text”).text();
System.out.println(链接);
}
捕获(IOE异常)
{
e、 printStackTrace();
}
返回FileVisitResult.CONTINUE;
}
});
这也是我的问题,它可能会给我提供一些额外的见解,让我知道我实际上在做什么 系统出发似乎是个坏主意
下面是一些未经测试的代码,可能会起作用
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import org.apache.commons.io.FilenameUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class App {
public static void main(String[] args) throws IOException {
String dirStart = "/home/data/";
Path root = Paths.get(dirStart);
Files.walkFileTree(root.toAbsolutePath().normalize(), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, java.nio.file.attribute.BasicFileAttributes attrs) throws IOException {
// CHANGE OUTPUT TO NEW FILE
String print_file = file.getFileName().toString();
String fileNameWithOutExt = FilenameUtils.removeExtension(print_file);
System.out.println(fileNameWithOutExt);
// SOUP PART
String everything = new String(Files.readAllBytes(file), StandardCharsets.UTF_8);
Document doc = Jsoup.parse(everything);
String link = doc.select("block.full_text").text();
try (PrintStream out = new PrintStream(new FileOutputStream(fileNameWithOutExt + "_output.txt"))) {
out.println(link);
} catch (IOException e) {
e.printStackTrace();
}
return FileVisitResult.CONTINUE;
}
});
}
}
import java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.PrintStream;
导入java.nio.charset.StandardCharset;
导入java.nio.file.FileVisitResult;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.nio.file.SimpleFileVisitor;
导入org.apache.commons.io.FilenameUtils;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
公共类应用程序{
公共静态void main(字符串[]args)引发IOException{
字符串dirStart=“/home/data/”;
路径根=Path.get(dirStart);
Files.walkFileTree(root.toabsolutionPath().normalize(),新的SimpleFileVisitor()){
@凌驾
公共文件VisitResult visitFile(路径文件,java.nio.file.attribute.BasicFileAttributes attrs)引发IOException{
//将输出更改为新文件
字符串print_file=file.getFileName().toString();
字符串fileNameWithOutExt=FilenameUtils.removeExtension(打印文件);
System.out.println(fileNameWithOutExt);
//汤部
String everything=新字符串(Files.readAllBytes(file),StandardCharsets.UTF_8);
Document doc=Jsoup.parse(所有内容);
字符串链接=doc.select(“block.full_text”).text();
try(PrintStream out=newprintstream(newfileoutputstream(fileNameWithOutExt+“\u output.txt”)){
out.println(link);
}捕获(IOE异常){
e、 printStackTrace();
}
返回FileVisitResult.CONTINUE;
}
});
}
}
系统设置似乎是个坏主意
下面是一些未经测试的代码,可能会起作用
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import org.apache.commons.io.FilenameUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class App {
public static void main(String[] args) throws IOException {
String dirStart = "/home/data/";
Path root = Paths.get(dirStart);
Files.walkFileTree(root.toAbsolutePath().normalize(), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, java.nio.file.attribute.BasicFileAttributes attrs) throws IOException {
// CHANGE OUTPUT TO NEW FILE
String print_file = file.getFileName().toString();
String fileNameWithOutExt = FilenameUtils.removeExtension(print_file);
System.out.println(fileNameWithOutExt);
// SOUP PART
String everything = new String(Files.readAllBytes(file), StandardCharsets.UTF_8);
Document doc = Jsoup.parse(everything);
String link = doc.select("block.full_text").text();
try (PrintStream out = new PrintStream(new FileOutputStream(fileNameWithOutExt + "_output.txt"))) {
out.println(link);
} catch (IOException e) {
e.printStackTrace();
}
return FileVisitResult.CONTINUE;
}
});
}
}
import java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.PrintStream;
导入java.nio.charset.StandardCharset;
导入java.nio.file.FileVisitResult;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.nio.file.SimpleFileVisitor;
导入org.apache.commons.io.FilenameUtils;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
公共类应用程序{
公共静态void main(字符串[]args)引发IOException{
字符串dirStart=“/home/data/”;
路径根=Path.get(dirStart);
Files.walkFileTree(root.toabsolutionPath().normalize(),新的SimpleFileVisitor()){
@凌驾
公共文件VisitResult visitFile(路径文件,java.nio.file.attribute.BasicFileAttributes attrs)引发IOException{
//将输出更改为新文件
字符串print_file=file.getFileName().toString();
字符串fileNameWithOutExt=FilenameUtils.removeExtension(打印文件);
System.out.println(fileNameWithOutExt);
//汤部
String everything=新字符串(Files.readAllBytes(file),StandardCharsets.UTF_8);
Document doc=Jsoup.parse(所有内容);
字符串链接=doc.select(“block.full_text”).text();
try(PrintStream out=newprintstream(newfileoutputstream(fileNameWithOutExt+“\u output.txt”)){
out.println(link);
}捕获(IOE异常){
e、 printStackTrace();
}
雷图