如何从文件中读取信息,并将其存储为字符串。 Java的

时间:2014-09-15 18:43:10

标签: java string file

我已经走到了这一步,但这并没有在文件中读取,这就是我坚持的部分。我知道你需要使用扫描仪,但我不知道我在这里缺少什么。我认为它也需要一个文件的路径,但我不知道在哪里把它放在

public class string
{

public static String getInput(Scanner in) throws IOException
{



{ 
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter file");
String filename =keyboard.next(); 

File inputFile = new File(filename);
Scanner input = new Scanner(inputFile);
String line;

while (input.hasNext())
{
line= input.nextLine();
System.out.println(line);
}
input.close();
}
if(filename.isEmpty()) 
{
    System.out.println("Sorry, there has been an error. You must enter a string! (A string is       some characters put together.) Try Again Below.");
   return getInput(in);   
}
else
{
    return filename;
}
}   



public static int getWordCount(String input)
{

String[] result = input.split(" ");
return result.length;
}     




 public static void main(String[] args)
{
DecimalFormat formatter = new DecimalFormat("0.##");
String input = getInput(new Scanner(System.in)); 
float counter = getWordCount(input);
System.out.println("The number of words in this string  ("+input+")  are: " + counter);
Scanner keyboard= new Scanner(System.in);

}   

}
//end of code

1 个答案:

答案 0 :(得分:1)

首先,在Java中执行文件I / O时,您应该正确处理可能发生的所有异常和错误。

通常,您需要在try块中打开流和资源,捕获catch块中发生的所有异常,然后关闭finally块中的所有资源。您还应该阅读有关这些here的更多内容。

对于使用Scanner对象,这看起来像:

    String token = null;
    File file = null; 
    Scanner in = null;
    try {
        file = new File("/path/to/file.txt");
        in = new Scanner(file);
        while(in.hasNext()) {
            token = in.next();
           // ...
        }
    } catch (FileNotFoundException e) {
        // if File with that pathname doesn't exist
        e.printStackTrace();
    } finally {
        if(in != null) {  // pay attention to NullPointerException possibility here
            in.close();
        }
    }

您还可以使用BufferedReader逐行读取文件。

BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
   // ...
}

添加了异常处理:

    String line = null;
    FileReader fReader = null;
    BufferedReader bReader = null;
    try {
        fReader = new FileReader("/path/to/file.txt");
        bReader = new BufferedReader(fReader);
        while ((line = bReader.readLine()) != null) {
               // ...
            }
    } catch (FileNotFoundException e) {
        // Missing file for the FileReader
        e.printStackTrace();
    } catch (IOException e) {
        // I/O Exception for the BufferedReader
        e.printStackTrace();
    } finally {
        if(fReader != null) { // pay attention to NullPointerException possibility here
            try {
                fReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(bReader != null) { // pay attention to NullPointerException possibility here
            try {
                bReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

通常,使用Scanner解析文件,并使用BufferedReader逐行读取文件。

还有其他更高级的方法可以在Java中执行读/写操作。查看其中一些here