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.运行结果图

如图所示,在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, 0,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读写文件,在文件中搜索内容,并输出含有该内容的所有行方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java 将字符串追加到文件已有内容后面的操作

    我就废话不多说了,大家还是直接看代码吧~ /** * 将字符串追加到文件已有内容后面 * * @param fileFullPath 文件完整地址:D:/test.txt * @param content 需要写入的 */ public static void writeFile(String fileFullPath,String content) { FileOutputStream fos = null; try { //true不覆盖已有内容 fos = new FileOutputSt

  • java在原字符中插入新字符或字符串实例

    插入字符代码: public class Test { /**在原字符中插入新字符**/ public static void main(String[] args){ StringBuffer sb = new StringBuffer("田田是一个女生!");//建立一个字符缓存区,缓存区中的内容为"田田是一个女生!" System.out.println("原字符缓存区中的内容为:"+sb);//输出原字符缓存区中的内容 System.ou

  • java中构造方法和普通方法的区别说明

    1.普通方法: 定义:简单的说方法就是完成特定功能的代码块. 普通方法定义格式: 修饰符 返回值类型 方法名 (参数类型 参数名1,参数类型 参数名2,.........) { 函数体: return 返回值: } 返回值类型用于限定返回值的数据类型. 普通方法分为:有明确返回值的方法和没有明确返回值的方法. A.有明确返回值的方法的调用 可以单独调用(无意义).输出调用.赋值调用(推荐). public static int sum (int a , int b) { int c =a+b;

  • Java获取文件ContentType案例

    源码如下: package com.oysept; import java.io.File; import java.io.IOException; import java.net.FileNameMap; import java.net.URLConnection; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import javax.activation.Mimetype

  • java中concat()方法的使用说明

    concat()方法介绍: 将几个字符串连接到一起. 例如: s = s.concat(str1);//将字符串str1接到字符串s后面 s = s.concat(str2);//将字符串str1接到字符串s后面 代码: public class Test { public static void main(String[] args){ String s = "厉害了,"; String str1 = "我的"; String str2 = "国!&qu

  • Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式

    1.问题描述 在一个目录及子目录下查找 TXT或Java文件,从中搜索所有"对象"字样的行. 在D盘中的所有文件中搜索含有"对象"的行. 2.解题思路 先找出D盘下所有文件 再对每个文件中的每行内容进行,进行查找,若含有"对象"两字,输出该行. 3.程序代码 import java.io.File; import java.io.IOException; import java.util.Scanner; public class B { sta

  • java中读写Properties属性文件公用方法详解

    前言 大家都知道Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置.像Python支持的配置文件是.ini文件,同样,它也有自己读取配置文件的类ConfigParse,方便程序员或用户通过该类的方法来修改.ini配置文件.在Java中,其配置文件常为.properties文件,格式为文本文件,

  • Java读取、写入文件如何解决乱码问题

    读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码.ANSI编码等等.二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码.) 因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8).而二进制文件可看成是变长编码的,因为是值编码嘛,多少

  • Java 在Word文档中添加艺术字的示例

    与普通文字相比,艺术字更加美观有趣也更具有辨识度,常见于一些设计精美的杂志或宣传海报中.我们在日常工作中编辑Word文档时,也可以通过添加艺术字体来凸显文章的重点,美化页面排版.这篇文章将介绍如何使用Free Spire.Doc for Java在word文档中添加艺术字并设置样式和效果. Jar包导入 方法一:下载Free Spire.Doc for Java包并解压缩,然后将lib文件夹下的Spire.Doc.jar包作为依赖项导入到Java应用程序中. 方法二:通过Maven仓库安装JAR

  • java学习之一维数组中重复元素的去除

    目录 一.基本思路 二.步骤 1.设置判断数组Arr[ ] 2.继承数组newArr[ ]获取不重复元素 总结 一.基本思路 首先,假设一个一维数组arr[ ]={ 4, 3, 35, 3, 2, 4, 6, 3},其中有三个重复元素 3,4,3.要如何剔除呢,由于还没有涉猎到一些经典的调用,所以我选择了用新的数组newArr[ ]去继承原来数组中的不重复的元素,另外还需要一个判断数组Arr[ ],来判断arr[ ]中哪几个元素是重复的,才好去除掉. 二.步骤 1.设置判断数组Arr[ ] 代码

  • Java调用明华RF读写器DLL文件过程解析

    这篇文章主要介绍了Java调用明华RF读写器DLL文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先jdk必须得是32位的,IDE也必须是32位的(我用的idea,所以为了使用32位的,下载了2018年1月版本的). 明华RF读写器演示文件提供了一份名为mwrf32.dll的动态链接库文件 java如果想要调用的话,就必须使用JNI或者JNA的方式,毕竟跨语言了 首先在pom.xml文件中空白地方,右键选择Dependency,在

  • Python中搜索和替换文件中的文本的实现(四种)

    在本文中,我将给大家演示如何在 python 中使用四种方法替换文件中的文本. 方法一:不使用任何外部模块搜索和替换文本 让我们看看如何在文本文件中搜索和替换文本.首先,我们创建一个文本文件,我们要在其中搜索和替换文本.将此文件设为 Haiyong.txt,内容如下: 要替换文件中的文本,我们将使用 open() 函数以只读方式打开文件.然后我们将 t=read 并使用 read() 和 replace() 函数替换文本文件中的内容. 语法: open(file, mode='r') 参数: f

  • Java读写txt文件时防止中文乱码问题出现的方法介绍

    问题:在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通常,假如自己不修改的话,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码方式),而IDE中Encode不修改的话,默认是utf-8的编码,这就是为什么会出现乱码的原因.当在OS下手工创建并写入的txt文件(gbk),用程序直接去读(utf-8),就会乱码.为了避免可能的中文乱码问题,最好在文件写入和读出的时候

  • Java读写文件方法总结(推荐)

    Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用Java的读写文件方法来处理数据方面的输入输出,确实很方便.奈何我的记性实在是叫人着急,很多时候既然都会想不起来怎么写了,不过我的Java代码量也实在是少的可怜,所以应该多多练习.这里做一个总结,集中在一起方面今后查看. Java读文件 package 天才白痴梦; import java.io.BufferedReader; import java.io.File; import java.io.FileInputSt

  • Java读写ini文件代码示例

    本文实例主要实现Java读写ini文件,具体如下,代码中有详细注释. 在java中,配置文件一般主要是两种形式:xml文件或者property文件.但大部分人都习惯使用ini文件,而且ini文件的分节以及注释功能,比起xml,也是易懂易用的. 实例代码: package com.epoint.tools; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; im

随机推荐