1. 程式人生 > 程式設計 >Java讀寫檔案,在檔案中搜索內容,並輸出含有該內容的所有行方式

Java讀寫檔案,在檔案中搜索內容,並輸出含有該內容的所有行方式

1.問題描述

在一個目錄及子目錄下查詢 TXT或Java檔案,從中搜索所有“物件”字樣的行。

在D盤中的所有檔案中搜索含有“物件”的行。

2.解題思路

先找出D盤下所有檔案

再對每個檔案中的每行內容進行,進行查詢,若含有“物件”兩字,輸出該行。

3.程式程式碼

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class B {
  static int m=1;
  static void search(File a,String x) throws IOException{//在檔案a中的每行中查詢x
    Scanner scan = new Scanner(a,"gbk");
    int k = 0;
    while(true){  
      if(scan.hasNext()==false) break;
      String s = scan.nextLine();
      k++;
      if(s.contains(x)){
        String ss =m +".檔案:"+ a.getPath() + " 第" + k + "行 \n 內容:" + s;
        System.out.println(ss);
        m++;
      }
    } 
    Scanner scan1 = new Scanner(a,"utf-8");
    int k1 = 0;
    while(true){  
      if(scan1.hasNext()==false) break;
      String s1 = scan1.nextLine();      
      k1++;
      if(s1.contains(x)){
        String ss1 =m +".檔案:"+ a.getPath() + " 第" + k1 + "行 \n 內容:" + s1;
        System.out.println(ss1);
        m++;
      }
    } 
  }
  static void f(File a,String s)throws IOException{//在a下所有檔案中查詢含有s的行
    
    File[] ff = a.listFiles();
    if(ff==null) return;
    for(File it : ff){
      if(it.isFile()){//若a是檔案,直接查詢
        search(it,s);
      }
      if(it.isDirectory()){//若a是目錄,則對其目錄下的目錄或檔案繼續查詢
        f(it,s);
      }
    }    
  }

  public static void main(String[] args)throws IOException {
    f(new File("d:\\"),"物件");

  }

}

4.執行結果圖

Java讀寫檔案,在檔案中搜索內容,並輸出含有該內容的所有行方式

如圖所示,在d盤下所有檔案中共有198行含有“物件”兩字。

補充知識:java 編寫一個程式分別用位元組流和字元流拷貝一個文字檔案

我就廢話不多說了,大家還是直接看程式碼吧~

package cn; 
import java.io.*; 
public class Test01 {
	public static void main(String[] args) throws Exception{
		// 位元組流拷貝
		// 建立一個位元組輸入流,用於讀取E盤下的sss.txt檔案
		FileInputStream fis=new FileInputStream("E:/sss.txt");
		// 建立一個檔案位元組輸出流,用於將讀取到的資料寫入當前sss.bak檔案中
		FileOutputStream fos=new FileOutputStream("E:/sss.bak");
		byte[] buff=new byte[1024];		// 定義一個字元陣列作為緩衝區
		int ch;
		while ((ch=fis.read()) !=-1) {	// 判斷是否讀到檔案末尾
			System.out.write(ch);
			fos.write(buff,ch);		// 從第一個一個位元組開始,向檔案寫入ch個字元
		}
		fis.close();
		fos.close();
		// 字元流拷貝
		// 建立一個BufferedReader緩衝物件
		BufferedReader br=new BufferedReader(new FileReader("E:/aaa.txt"));
		// 建立一個BufferedWriter緩衝物件
		BufferedWriter bw=new BufferedWriter(new FileWriter("E:/aaa.bak"));
		String str;
		while ((str=br.readLine()) != null) {	// 每次讀取一行文字,判斷是否到檔案末尾
			bw.write(str);
			bw.newLine();	// 寫入一個換行符,該方法會根據不同的作業系統生成相應的換行符
		}
		br.close();
		bw.close();	
	}
}

以上這篇Java讀寫檔案,並輸出含有該內容的所有行方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。