3 回答

TA貢獻1951條經(jīng)驗 獲得超3個贊
你可以在沒有任何外部庫的情況下,只使用 java.nio。
程序如下:
代碼采用路徑 asString并從中創(chuàng)建一個路徑(在此示例中java.nio.Path使用常量String路徑完成)。然后它準備一個Map<String, List<Strings>將文件名及其內(nèi)容存儲為String每行一個的。在此之后,它會讀取使用的目錄內(nèi)容DirectoryStream<Path>從java.nio中進入的文件路徑,并同時存儲列表,內(nèi)容閱讀Files.readAllLines(Path path)的List<String>,并在絕對文件路徑Map。
最后,它只是打印出讀取的所有內(nèi)容,由一行長破折號分隔...
試試吧,也許對你的搜索有幫助。
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class FileContentReader {
private static final String FOLDER_PATH = "Y:\\our\\destination\\folder\\";
public static void main(String[] args) {
Path folderPath = Paths.get(FOLDER_PATH);
// prepare a data structure for a file's name and content
Map<String, List<String>> linesOfFiles = new TreeMap<String, List<String>>();
// retrieve a list of the files in the folder
List<String> fileNames = new ArrayList<>();
try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(folderPath)) {
for (Path path : directoryStream) {
fileNames.add(path.toString());
}
} catch (IOException ex) {
System.err.println("Error reading files");
ex.printStackTrace();
}
// go through the list of files
for (String file : fileNames) {
try {
// put the file's name and its content into the data structure
List<String> lines = Files.readAllLines(folderPath.resolve(file));
linesOfFiles.put(file, lines);
} catch (IOException e) {
e.printStackTrace();
}
}
// finally, print everything
linesOfFiles.forEach((String fileName, List<String> lines) -> {
System.out.println("Content of " + fileName + " is:");
lines.forEach((String line) -> {
System.out.println(line);
});
System.out.println("————————————————————————————————");
});
}
}

TA貢獻2051條經(jīng)驗 獲得超10個贊
標準的 Java 8 方法是簡單地迭代Path給定目錄中的所有s:
Path inputDir = Paths.get("path/to/dir");
if (Files.isDirectory(inputDir)) {
List<Path> filePaths = Files.list(inputDir).collect(Collectors.toList());
for (Path filePath : filePaths) {
// Load file contents...
}
}
您放入循環(huán)中的內(nèi)容取決于您的需要。您可以Reader根據(jù)要使用的內(nèi)存量和性能要求等,制作一個, 流式輸出甚至內(nèi)存映射它。

TA貢獻1934條經(jīng)驗 獲得超2個贊
使用 commons-io
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
public static void main(String[] args) {
try {
File files = new File("\\home\\folder");
for (File file : files.listFiles()) {
List<String> lines = FileUtils.readLines(file);
System.out.println();
System.out.println();
System.out.println("******" + file.getName());
for (String line : lines) {
System.out.println(line);
}
System.out.println(file.getName() + "******");
}
} catch (IOException e) {
e.printStackTrace();
}
}
添加回答
舉報