gpt4 book ai didi

java - 解析后重置Java BufferedReader

转载 作者:行者123 更新时间:2023-12-01 14:33:53 24 4
gpt4 key购买 nike

我知道这是通过mark()和reset()完成的。然而,我对读取文件非常陌生,我的代码不起作用,我知道我的错误可能非常明显和愚蠢,我只是无法弄清楚。我尝试过移动它周围的东西但没有成功。我的代码的目标是在第一次找到空行时弹出一个选项 Pane (我还没有到达),然后返回到文件的顶部。这可能是一个愚蠢的问题,但如果有人可以帮助我,我将非常感激。顺便说一句,问题是在读取最后一行后抛出 IOException(每次单击 jbutton 时都会执行此方法)。

public static void fileReader( String inputFile , JTextField array[] )
{
/** Local Constants **/

final String NOT_READABLE = "File not readable!!";
final String IO_ERROR = "Input/Output Error!!";

/** Local Variables **/

String line;

if ( inStream == null )
{
fileOpen( inputFile );
}

if ( isReadableFile( inputFile ) )
{
try
{

line = inStream.readLine();
inStream.mark( 64 );

if ( line != null )
{
int j = 0;

for ( int i = 0; i < line.length(); i++ )
{
if ( Character.isDigit( line.charAt( i ) ) )
{
if ( j < array.length )
array[ j ].setText( line.charAt( i ) +
MagicSquareGUI.BLANK );

j++;
}
}
}

else
{
inStream.close();
inStream.reset();
}
}

catch ( IOException e )
{
System.out.println( IO_ERROR );
}

catch ( Exception e )
{
System.out.println( ERROR );
}
}

else
System.out.println( NOT_READABLE );

}

最佳答案

尝试重置后,您收到此错误IOException

可能性:

1) 可能不支持您在流类类型上调用的重置。并非所有类型的流都支持重置

2) 您已经读取了这些字节。在这种情况下,重置将会失败。仅当读取的字节数尚未超过标记限制时才支持重置。如果您已经在读取字节,请检查您的 line 变量及其长度。

答案已更新:

1) 在开始阅读之前,您需要标记。应该是这样的:

     inStream.mark( 64 );
line = inStream.readLine();

2) 不要关闭,除非您已完成它。关闭stream然后使用Reset是错误的。

这行 inStream.close() 需要从当前的 else 中删除,并将其放在函数的末尾,可能在之后最后 其他

3) 我想向您指出的另一件事是,您仅阅读文本文件中的第一行。您的流阅读器不在循环中。

我通过上述更改成功测试了您的功能。

关于java - 解析后重置Java BufferedReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16641282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com