使用扫描仪读取以前创建的文件时找不到文件

时间:2014-11-14 22:30:13

标签: java macos printwriter

我正在尝试编写一个程序,该程序接受在先前程序中使用PrintWriter创建的文档,然后对结果进行排序。我无法运行第一个程序,因为我有一个iMac而且路径不仅仅是C://FileName.text。第一个程序会创建文件并将其打印到文档中。当我去Finder并查看文档时,我可以看到它。但是,尝试使用我在第一个程序中使用的相同格式来定位文件似乎不起作用。我需要能够将他在第一个程序中创建的这个文档读入第二个程序,然后对结果进行排序。我想简化这个问题:我用一个程序创建了一个文本文件,现在我需要能够使用第二个程序来读取刚创建的文档,这样我就可以对结果进行整理。我不确定为什么程序无法找到新文件,我可以在Documents中看到它。

这是它给出的错误:

Exception in thread "main" java.io.FileNotFoundException: /Users/myName/user.home.UnsortedDocument.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.util.Scanner.<init>(Scanner.java:656)
at Sorting.readIn(Sorting.java:14)
at Sorting.main(Sorting.java:35)

这就是文件的标题:

user.home.UnsortedDocumentt.txt

查看文件属性,我可以看到它保存在Java文件中。问题是它没有保存在正确的位置,以便下一个程序找到它吗?

请帮助,我已经厌倦了解决这个问题,但我很难过。我已经将代码包含在我迄今为止的两个程序中。

第一个程序输入一个已保存的文件然后对其进行加扰并打印出一个加扰文档:

public Scramble(){
}

public void readIn()throws Exception {
    Scanner stdln = new Scanner(new File(System.getProperty("user.home"),"SortedDocument.txt"));
    int i = 0;
    while (stdln.hasNextLine()){
        line[i] = stdln.nextLine();
        i++;
    }
}

public void mixUp()throws Exception{
    PrintWriter out = new PrintWriter("user.home.UnsortedDocument.txt");
    int inc = 239;
    int counter = 0;

    while (inc>0){
        int r = rand.nextInt(inc);
        for (int i = 0; counter!=r; i++){
            if (line[i]!= null){
                counter++;
            }
            if (counter==r){
                out.println(line[i]);
                line[i] = null;
            }
        }
        counter = 0;
    }
    out.close();

    System.out.println("Your scrambled document has been written to UnsortedDocument.txt");   
}

以下是我遇到问题的新程序的一部分,即读取新创建文档的部分:

import java.io.PrintWriter;
import java.io.File;
import java.util.*;
import java.text.*;

public class Sorting{

String[] line = new String[238];
    public reSort(){
}

public void readIn()throws Exception {
    Scanner stdln = new Scanner(new File(System.getProperty("user.home"),user.home.UnsortedDocument.txt"));
    int i = 0;
    while (stdln.hasNextLine()){
        line[i] = stdln.nextLine();
        i++;
    }
}

1 个答案:

答案 0 :(得分:2)

您没有使用PrintWriter指定路径。试试这个:

PrintWriter out = new PrintWriter(new File(System.getProperty("user.home"),"user.home.UnsortedDocument.txt"));