scan.hasNext false应为true

时间:2012-12-19 07:38:46

标签: java filewriter bufferedwriter

所以我是编程的初学者,我正试图弄清楚问题是什么

以下功能。问题在于scan.hasNext()方法我有两个println

语句(在我扫描后一个,第二个在第二个方法上)告诉我scan.hasNext()是否返回 true false 。奇怪的是

现在的代码进入了while循环,这是应该发生的事情,但是当我

删除其中没有进入循环的println语句之一以及其他打印

声明告诉我scan.hasNext() false

这很奇怪,因为除了擦除打印声明之外我什么也没做。而且我

发现如果我再添加一个,总共3个打印语句,它将再次为假,如果我

再加上第四个是真的,等等。我想我不明白hasNext是如何工作的,因为我

不知道如何关注“光标”的位置。

public void createFile(String filename){    
    final File file = new File(filename);       
    try{
        scan = new Scanner(file);
        **System.out.println(scan.hasNext());**
        buff = new BufferedWriter(new FileWriter(filename), 1);         
    }
    catch(Exception e1){
        try{
            buff = new BufferedWriter(new FileWriter(filename));
            scan = new Scanner(file);
        }
        catch(Exception e2){
            System.out.println("Error trying to create file");
        }   
    }
}

public String readFile(){
    String fileContents = "";
    **System.out.println(scan.hasNext());**
    if(scan.hasNext())
        while(scan.hasNext())
            fileContents = fileContents + scan.next()+" "+scan.next()+" "+scan.next();
    return fileContents;

}

1 个答案:

答案 0 :(得分:0)

好的,我明白了。 vishal_aim的建议帮我搞清楚了。以下一行

buff = new BufferedWriter(new FileWriter(filename), 1);

将我的文件缩减为零大小。原因是因为我真的打算这样做。

buff = new BufferedWriter(new FileWriter(filename, true));

首先我放一个,因为我认为当java要求布尔值时,java会自动生成1。其次,我试图使用FileWriter类的构造函数,让我追加到文件的末尾。如果你没有在你的文件名中包含true,那么它会创建一个新文件,截断你需要的文件中的任何内容。这只是一个累了的错误,如果我需要将布尔值放在BufferedWriter或FileWriter上,我已经忘记了。如果你想知道BufferedWriter构造函数没有给我的原因,错误是因为有一个构造函数,它接受一个int,int是缓冲区大小。谢谢大家的贡献。