Java 在文件夹中搜索.txt文件并打印文本文件的内容?
我一直在试图找到一种方法,基本上在文件夹中搜索.txt文件(文本文件的名称基于用户输入),然后吐出该文本文件的内容。如何通过Java.io实现这一点 到目前为止我做了什么Java 在文件夹中搜索.txt文件并打印文本文件的内容?,java,input,file-io,output,Java,Input,File Io,Output,我一直在试图找到一种方法,基本上在文件夹中搜索.txt文件(文本文件的名称基于用户输入),然后吐出该文本文件的内容。如何通过Java.io实现这一点 到目前为止我做了什么 import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class searchDemo { public static void main(String[] args) throws FileN
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class searchDemo {
public static void main(String[] args) throws FileNotFoundException{
Scanner keyboard = new Scanner(System.in);
System.out.println("Who would you want to search for?");
String name = keyboard.nextLine();
File dir = new File("/Users/john/Documents/workspace/Axis Powers/users");
Scanner scan = new Scanner("/Users/john/Documents/workspace/Axis Powers/users");
String nameTweets = scan.nextLine();
for(File file : dir.listFiles()){
if(file.isFile() && nameTweets.equalsIgnoreCase(name) && nameTweets.endsWith(".txt")){
System.out.println(name);
System.out.println(nameTweets);
/**
I was getting bugs at this time so I printed the
user input first and then the ".txt" file version of
the user input to see what was printing and it
obviously wasn't what I wanted it to do
**/
}
}
}
}
我的任务是:允许用户搜索一个人的名字,如果这个人的名字(在一个文件中)存在于.txt版本中,那么它将打印出.txt文件中的内容
例如:如果一个人搜索“John Legend”,并且在一个文件中有一个名为“John Legend.txt”的文件,那么它将打印出“John Legend.txt”文件的内容您在这里显示的代码不会进入If子句,因为
nameTweets
将始终是“/Users/John/Documents/workspace/Axis Powers/Users”
,因此,nameTweets.equalsIgnoreCase(name)
将为false
为了让您的代码正常工作,我将删除您的扫描仪扫描
,并使用,以便获取目录中的所有文件。之后,如果条件得到验证,您只需读取文件(例如,使用a)并打印出行
下面我为您提供了一个代码块,可以实现您想要的功能
完整代码
package testsplit;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Fraction {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Who would you want to search for?");
String name = keyboard.nextLine();
name += ".txt";
keyboard.close();
File dir = new File("/Users/john/Documents/workspace/Axis Powers/users");
File[] listOfFiles = dir.listFiles();
String filename, line;
for(File file : listOfFiles) {
filename = file.getName();
if(file.isFile() && filename.equalsIgnoreCase(name) && filename.endsWith(".txt") ){
try {
BufferedReader br = new BufferedReader(new FileReader(dir+"/"+filename));
while( (line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
其他注释
- 不要忘记关闭扫描仪/缓冲区阅读器(一般为流)。这一点非常重要,因为如果不关闭程序,在程序执行过程中可能会导致资源泄漏
扫描仪
,但这将不起作用。最后,你还没有解释你有什么问题。@JimGarrison啊!对不起,我的意思是“如果一个人的名字(在一个文件夹中)存在于一个.txt文件版本中…”&在示例的底部;我的意思是“如果一个人搜索[John Legend],在一个文件夹中有一个名为[John Legend.txt]的文件,它会打印出[John Legend.txt]文件的内容”。我遇到的问题是,我不太确定该怎么做(从用户输入)该名称和nameTweets(.txt文件)是相同的,以便打印.txt文件的内容您遇到了什么问题?请访问并阅读以了解使用此网站的指南。显示错误消息,如果有堆栈跟踪,请确保包含完整的堆栈跟踪,包括所有“由”部分,并指示代码中的哪个语句引发了异常。将堆栈跟踪格式化为代码(缩进4个空格或使用{}
按钮),然后打印。