Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的mark()和reset()方法_Java_File_Stream_Reset_Pushbackinputstream - Fatal编程技术网

Java中的mark()和reset()方法

Java中的mark()和reset()方法,java,file,stream,reset,pushbackinputstream,Java,File,Stream,Reset,Pushbackinputstream,根据文件, 无效标记(int readlimit):标记此输入流中的当前位置。 PushbackInputStream的标记方法不起任何作用 void reset():将此流重新定位到上次对此输入流调用mark方法时的位置。 类PushbackInputStream的方法reset除了抛出IOException之外,不执行任何操作 您可以检查上面的“不执行任何操作”。那么,如果是这样,为什么 这在哪里有用?在哪种情况下,我可以使用以上两种 方法 下面是一个例子: import java.io.B

根据文件,

无效标记(int readlimit):标记此输入流中的当前位置。 PushbackInputStream的标记方法不起任何作用

void reset():将此流重新定位到上次对此输入流调用mark方法时的位置。 类PushbackInputStream的方法reset除了抛出IOException之外,不执行任何操作

您可以检查上面的“不执行任何操作”。那么,如果是这样,为什么 这在哪里有用?在哪种情况下,我可以使用以上两种 方法

下面是一个例子:

import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.PushbackInputStream; 
public class PushbackInputStreamDemo  
{ 
    public static void main(String arg[]) throws Exception 
    { 
        PrintWriter pw = new PrintWriter(System.out, true); 
        String str = "GeeksforGeeks a computer science portal "; 
        byte b[] = str.getBytes(); 
        ByteArrayInputStream bout = new ByteArrayInputStream(b); 
        PushbackInputStream push = new PushbackInputStream(bout); 

        int c; 
        while((c=push.read())!=-1) 
        { 
            pw.print((char)c); 
        } 
        pw.println(); 

        // marking the position  
        push.mark(5); 

        // reseting is not supported throw exception 
        push.reset(); 

        pw.close(); 
    } 
} 
上面是示例,但没有得到两种方法的确切内容 做请导游


标记
重置
方法是可选操作,并非每个InputStream都需要支持。您可以调用
markSupported
,查看它是否支持

PushbackInputStream不支持这些方法


这些方法仍然存在,因为它们是在
InputStream
接口中定义的。可能是错误的设计决策(可能已添加到单独的接口),但事实就是如此。

PushbackInputStream.markSupported()
返回
false
。因此,无论如何,您不应该调用
标记
/
重置
。在这个类中,
mark
的javadocs清楚地表明它什么也不做。如果它不起作用,那么使用它又有什么关系呢。顺便说一下,我现在明白了。也许是一个糟糕的设计决定:当然。