0
予讀取命令行下面的字符串(例如):操縱的ByteArray流
abcgefgh0111010111100000
予處理此作爲流在其爲二進制的第一位置到達(在這種情況下,它是9位)。 的代碼如下:
String s=args[0];
ByteArrayInputStream bis=new ByteArrayInputStream(s.getBytes());
int c;
int pos=0;
while((c=bis.read())>0)
{
if(((char)c)=='0' || ((char)c)=='1') break;
pos++;
}
bis.mark(pos-1);\\this does not help
bis.reset();\\this does not help either
System.out.println("Data begins from : " + pos);
byte[] arr=new byte[3];
try{
bis.read(arr);
System.out.println(new String(arr));
}catch(Exception x){}
現在Arraystream將開始從位置10( '1')讀數。
如何讓它退回一個位置,實際開始再次從位置9的第一個二進制數字('0')開始讀取。
bis.mark(pos-1)
或重置不起作用。
沒有幫助 - 將其添加到最後,它從第二個二進制文件開始打印,而不是第一個。 bis.mark(pos-1); \t bis.reset(); System.out.println(「Data beginning from:」+ pos); \t byte [] arr = new byte [3]; \t嘗試{ \t bis.read(arr); \t System.out.println(new String(arr)); \t} catch(Exception x){} – IUnknown
已編輯。這就是你需要使用它的方式。 –
也不管用 - 在這種情況下,流已經讀取了第一個二進制文件;並且不能被後退一個位置。 – IUnknown