为了这个类任务的目的,我们被要求创建一个使用文件类的程序(我知道输入流要好得多)但是,我们必须要求用户输入.txt的名称文件。
public class input {
public static void main(String[] args) throws FileNotFoundException {
Scanner s = new Scanner(System.in);
String name;
int lineCount = 0;
int wordCount = 0;
System.out.println("Please type the file you want to read in: ");
name = s.next();
File input = new File("C:\\Users\\Ceri\\workspace1\\inputoutput\\src\\inputoutput\\lab1task3.txt");
Scanner in = new Scanner(input);
我将如何获得
File input = new File(...);
搜索文件只是输入'lab1task3'不起作用。
编辑:错误 -
Exception in thread "main" java.io.FileNotFoundException: \lab1task3.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.util.Scanner.<init>(Unknown Source)
at inputoutput.input.main(input.java:19)
答案 0 :(得分:1)
扫描仪无法以这种方式读取文件,您需要先将其存储为文件!
如果你将它放在try-catch块中,你可以确保如果找不到文件,程序就不会中断。我建议将它包装在do-while / while循环中(取决于结构),最终条件是找到文件。
我把你的主要方法改为这个并正确编译:
public static void main(String[] args) throws FileNotFoundException {
Scanner sc = new Scanner (System.in);
System.out.println("Please type the file you want to read in: ");
String fname = sc.nextLine();
File file = new File (fname);
sc.close();
}
答案 1 :(得分:0)
要搜索特定文件夹中的文件,您可以通过以下方式迭代给定文件夹中的文件:
File givenFolder = new File(...);
String fileName = (...);
File toSearch = findFile(givenFolder, fileName);
函数 findFile(文件夹,String fileName)将迭代 givenFolder 中的文件并尝试查找该文件。它看起来像这样:
public File findFile(File givenFolder, String fileName)
{
List<File> files = getFiles();
for(File f : files)
{
if(f.getName().equals(fileName))
{
return f;
}
}
return null;
}
函数 getFiles 只是迭代给定文件夹中的所有文件,并在找到文件夹时自行调用:
public List<File> getFiles(File givenFolder)
{
List<File> files = new ArrayList<File>();
for(File f : givenFolder.listFiles())
{
if(f.isDirectory())
{
files.addAll(getFiles(f));
}
else
{
files.add(f);
}
}
}
我希望这会对你有所帮助:)如果你想了解更多关于这里发生的事情,请随时问:)