2017-04-08 2 views
0

を含むファイルから行を読み込む:Javaの - 私はちょうど私が次の形式であるtest.txtと呼ばれる特定のファイルを読み込む必要が運動をやろうとしているテキストや数

Sampletest 4

私がしたいことは、テキスト部分を1つの変数に、番号を別の変数に格納したいということです。私はまだ初心者ですので、私はこれまでに得たことをここではほとんど働かないものを見つけるためにかなりグーグルでなければなりませんでした。

あなただけの必要
public static void main(String[] args) throws Exception{ 
    try { 
     FileReader fr = new FileReader("test.txt"); 
     BufferedReader br = new BufferedReader(fr); 

     String str; 
     while((str = br.readLine()) != null) { 
      System.out.println(str); 
     } 
     br.close(); 

    } catch(IOException e) { 
     System.out.println("File not found"); 
    } 
+0

実際にあなたの例では、分割は、正規表現を受け取り、動作しない別の1 – nachokk

答えて

0

String[] parts = str.split(" "); 

や部品[0]のテキスト(sampletest) や部品である[1]数4

+0

を保持するためのテキスト部分を保持するために '一覧'を作成し、別の変数 '一覧'。あなたは '\\ s +'のようなsometingを渡すべきです – nachokk

2

が読んなりScannerを、使用していますDIYコードよりファイルの方が簡単です:

try (Scanner scanner = new Scanner(new FileInputStream("test.txt"));) { 
    while(scanner.hasNextLine()) { 
     String name = scanner.next(); 
     int number = scanner.nextInt(); 
     scanner.nextLine(); // clears newlines from the buffer 
     System.out.println(str + " and " + number); 
    } 
} catch(IOException e) { 
    System.out.println("File not found"); 
} 

try-with-resources構文:tryが終了したときにスキャナを自動的に閉じます。ScannerCloseableを実装しているため使用できます。

0
あなたが行ずつ( test.txtファイルから) 、ファイル全体の内容を読んでいるようですが、以下に示すように、あなたが数値と非数値の行を保存するために2つの別々の Listのオブジェクトを必要とするので、思わ

String str; 
List<Integer> numericValues = new ArrayList<>();//stores numeric lines 
List<String> nonNumericValues = new ArrayList<>();//stores non-numeric lines 
while((str = br.readLine()) != null) { 
    if(str.matches("\\d+")) {//check line is numeric 
     numericValues.add(str);//store to numericList 
    } else { 
      nonNumericValues.add(str);//store to nonNumericValues List 
    } 
} 
0

Javaユーティリティを使用できますFiles#lines()

次に、このようなことができます。 String#split()を使用して各行を正規表現で解析します。この例ではコンマを使用しています。

public static void main(String[] args) throws IOException { 
    try (Stream<String> lines = Files.lines(Paths.get("yourPath"))) { 
     lines.map(Representation::new).forEach(System.out::println); 
    }   
} 

static class Representation{ 
    final String stringPart; 
    final Integer intPart; 

    Representation(String line){ 
     String[] splitted = line.split(","); 
     this.stringPart = splitted[0]; 
     this.intPart = Integer.parseInt(splitted[1]); 
    } 
} 
0

ファイルの各行に常に形式が設定されていることを確認してください。

String str; 
List<Integer> intvalues = new ArrayList<Integer>(); 
List<String> charvalues = new ArrayList<String>(); 
try{ 
    BufferedReader br = new BufferedReader(new FileReader("test.txt")); 
    while((str = br.readLine()) != null) { 
    String[] parts = str.split(" "); 
    charvalues.add(parts[0]); 
    intvalues.add(new Integer(parts[0])); 
} 
}catch(IOException ioer) { 
ioer.printStackTrace(); 
} 
関連する問題