2016-04-13 38 views
0

我有一個文件有很多行。 例如:如何檢索java中的.txt的所有十六進制值

toto = 0x0020 tata 0x2000 0x0003 
tata = 0x0001 
tututtt = 0x0021 
=> 0x3200 

我只是想在一個字節數組有這些十六進制值。 我試圖使用BufferReader和分割線與「」,但我需要找到一種方法來保持專有的十六進制值。

在此先感謝您的幫助。

回答

0

我會用java.util.Scanner去可以讀取的標記和圖案,下面是一個可以讀取文件中的代碼:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.util.regex.Pattern; 

public class ReadOnlyHex { 

private static Pattern pattern = Pattern.compile("0x\\d{4}"); 
public static void main(String[] args) throws FileNotFoundException { 
    Scanner in = new Scanner(new File("c:/temp/input.txt")); 

    while(in.hasNextLine()) { 
     String token = in.findInLine(pattern); 

     if (token == null) { 
      in.nextLine(); 
      continue; 
     } 

     System.out.println(token.getBytes()); 
    } 

    in.close(); 
} 

} 

我只能假設你正在尋找字符串的字節數組,可以String.getBytes()

否則實現,該值表示int以後可改爲Integer.toBinaryString

+0

這正是我期待的!非常感謝 – Yahie

0

您可以使用正則表達式模式進行過濾。如果您使用的是Java8,則循環播放並使用過濾器函數。

所以先定義你的模式

final Pattern p= Pattern.compile("0x[0-9A-F]+$"); 

然後您可以篩選每一行數組作爲

String[] splitLineArray=line.split(" "); 

String[] hexNumbers=Arrays.stream(splitLineArray).filter((s)-> p.matcher(s).matches()).toArray(); 

這將返回唯一的十六進制數的新數組。