从文件中读取 N 行并保存到新文件中
Read N lines from file and save it to new file
例如,如何从readFile
或n行中读取20行并将其保存到另一个文件(writeFile
)?
public class Test_read_file {
public static List<String> readFile() throws IOException {
try(BufferedReader br = new BufferedReader(new FileReader("C:\\\\Users\\\\Admin\\\\Desktop\\\\Work Files\\\\314-WO0000001133814\\\\Cards\\\\MBD10760_182.out"))){
List<String> listOfData = new ArrayList<>();
String d;
while((d = br.readLine()) != null){
listOfData.add(d);
}
return listOfData;
}
}
public static void writeFile(List<String> listOfData) throws IOException{
try(BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\\\Users\\\\Admin\\\\Desktop\\\\Work Files\\\\314-WO0000001133814\\\\Cards\\\\MBD10760_187.out"))){
for(String str: listOfData){
bw.write(str);
bw.newLine();
}
}
}
public static void main(String[] args) throws IOException {
List<String> data = readFile();
writeFile(data);
}
}
只需在检查 listOfData 大小时添加到:
while( ((d = br.readLine()) != null) && listOfData.size()<20 ) {
listOfData.add(d);
}
假设您的代码工作正常:
public static List<String> readFile(int n) throws IOException {
try(BufferedReader br = new BufferedReader(new
FileReader("C:\\\\Users\\\\Admin\\\\Desktop\\\\Work Files\\\\314-
WO0000001133814\\\\Cards\\\\MBD10760_182.out"))){
List<String> listOfData = new ArrayList<>();
String d;
while((d = br.readLine()) != null && n>0){
listOfData.add(d);
n--;
}
return listOfData;
}
只需告诉循环它应该读取多少行。如果文件少于 n 行,则 while 循环的第一条语句将为 return null 并且它将中断循环。否则,当它读取 n 行时,由于 while 循环中的第二条语句,它将再次中断循环。
public static void main(String[] args) throws IOException {
Path pathFrom = Paths.get("C:\Users\Admin\Desktop\Work Files\314-WO0000001133814\Cards\MBD10760_182.out\"");
Path pathTo = Paths.get("C:\Users\Admin\Desktop\Work Files\314-WO0000001133814\Cards\MBD10760_187.out\"");
Files.write(pathTo, Files.lines(pathFrom).limit(20).collect(Collectors.toList()));
}
例如,如何从readFile
或n行中读取20行并将其保存到另一个文件(writeFile
)?
public class Test_read_file {
public static List<String> readFile() throws IOException {
try(BufferedReader br = new BufferedReader(new FileReader("C:\\\\Users\\\\Admin\\\\Desktop\\\\Work Files\\\\314-WO0000001133814\\\\Cards\\\\MBD10760_182.out"))){
List<String> listOfData = new ArrayList<>();
String d;
while((d = br.readLine()) != null){
listOfData.add(d);
}
return listOfData;
}
}
public static void writeFile(List<String> listOfData) throws IOException{
try(BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\\\Users\\\\Admin\\\\Desktop\\\\Work Files\\\\314-WO0000001133814\\\\Cards\\\\MBD10760_187.out"))){
for(String str: listOfData){
bw.write(str);
bw.newLine();
}
}
}
public static void main(String[] args) throws IOException {
List<String> data = readFile();
writeFile(data);
}
}
只需在检查 listOfData 大小时添加到:
while( ((d = br.readLine()) != null) && listOfData.size()<20 ) {
listOfData.add(d);
}
假设您的代码工作正常:
public static List<String> readFile(int n) throws IOException {
try(BufferedReader br = new BufferedReader(new
FileReader("C:\\\\Users\\\\Admin\\\\Desktop\\\\Work Files\\\\314-
WO0000001133814\\\\Cards\\\\MBD10760_182.out"))){
List<String> listOfData = new ArrayList<>();
String d;
while((d = br.readLine()) != null && n>0){
listOfData.add(d);
n--;
}
return listOfData;
}
只需告诉循环它应该读取多少行。如果文件少于 n 行,则 while 循环的第一条语句将为 return null 并且它将中断循环。否则,当它读取 n 行时,由于 while 循环中的第二条语句,它将再次中断循环。
public static void main(String[] args) throws IOException {
Path pathFrom = Paths.get("C:\Users\Admin\Desktop\Work Files\314-WO0000001133814\Cards\MBD10760_182.out\"");
Path pathTo = Paths.get("C:\Users\Admin\Desktop\Work Files\314-WO0000001133814\Cards\MBD10760_187.out\"");
Files.write(pathTo, Files.lines(pathFrom).limit(20).collect(Collectors.toList()));
}