2013-09-24 2 views
-3

외부 .txt 파일을 읽고 조작하는 프로그램을 만들려고합니다. 파일에는 5 개의 서로 다른 데이터 그룹이 있습니다. 각각 4 줄 (2는 int, 2 string)입니다. Scanner 클래스를 사용하여 파일을 읽어야합니다. 데이터 그룹을 하나의 객체로 저장하는 클래스를 작성합니다 (ProgramData를 호출 할 수 있습니다). 그런 다음 ProgamData 객체를 만들어 ArrayList에 넣고 각각의 5 개 그룹에 대해 반복해야합니다.자바에서 텍스트 파일 조작하기?

필자는 텍스트 파일을 가지고 있으며 스캐너로이 파일을 읽었습니다. (필자는 명령 줄에서 인쇄를 통해이 작업을 수행했음을 확인했습니다). 나는 거기에서 완전히 길을 잃었다. 어떤 도움이라도 대단히 감사하겠습니다.

도움이 될 것입니다이 좋아 아니,하지만 여기 내 코드는 지금까지 : 당신이 입력 파일을 읽을 때

import java.io.*; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class Project1 
{ 
    public static void main (String[] args) throws IOException 
    { 

     File dataFile = new File("C:\\Users/data.txt"); 
     Scanner fileReader = new Scanner(dataFile); 

     int firstLine = fileReader.nextInt(); 
     int secondLine = fileReader.nextInt(); 
     String whiteSpace = fileReader.nextLine(); 
     String thirdLine = fileReader.nextLine(); 
     String fourthLine = fileReader.nextLine(); 

     ArrayList<String> newArray = new ArrayList<String>(); 

    } 


} 
+2

클래스'ProgramData'를 정의하고 파일의 각 데이터 세트에 대한 인스턴스를 만들어야합니다. 'ArrayList'는'ArrayList '이어야합니다. 우리는 당신을 위해 코드를 작성하지 않을 것이지만, 이것은 올바른 방향으로 당신을 지적해야합니다. –

+0

문자열 (이제 텍스트 파일을 나타냄)을 토큰 화해야합니다. CSV라면 콤마, Text-Tab-Delimited 파일의 경우 탭 등 예상 할 수있는 어떤 것을 기반으로 토큰을 만드십시오. 모든 것이 그것의 고유 한 줄이면 새 줄 문자로 토큰 화합니다 (창에 \ r \ n \ n on * nix 's) – SnakeDoc

+1

쉬운 부분을 수행 했으므로 문제를 최소한으로 이해하고 도움을 요청하여 도움을 요청해야합니다. – Grammin

답변

0

확인, 스캐너 클래스의 hasNext() 메서드를 사용합니다. 그것은 파일의 끝에 도달하지 않도록 파일에 여전히 행이 있는지 감지합니다. 그렇게 사용하십시오

// get file input 
// this will make sure there are still lines left within the 
// file and that you have not reached the end of the file 
while(fileReader.hasNext()) { 

    int firstLine = fileReader.nextInt(); 
    int secondLine = fileReader.nextInt(); 
    String whiteSpace = fileReader.nextLine(); 
    String thirdLine = fileReader.nextLine(); 
    String fourthLine = fileReader.nextLine(); 

} 

찾고있는 작업을 수행하려면 위에 제공된 것을 취해야합니다.

0

다음은 수행 할 수있는 단계는 다음과 같습니다

  1. 이 그룹의 데이터를 받아 생성자를 확인
  2. 경우 ProgramData
  3. 로라는 이름의 클래스를 만듭니다. -> What is constructor
  4. 이제 Project1 클래스에서 파일을 올바르게 읽습니다. ->Scanner TutorialReading a txt file using scanner java

  5. 당신이 파일에서 모든 첫 번째 그룹 데이터의 경우 ProgramData 클래스에 전달하고 경우 ProgramData의 instace이

    아래와 같이 ArrayList의 것을 추가

    ProgramData pd1 = new ProgramData (/* list of parameter */) 
    
  6. 같은 인스턴스 무언가를 창조 일단

    // Define Arraylilst 
    ArrayList<ProgramData > list= new ArrayList<ProgramData >(); 
    
    // Do some operation like reading or collecting the data and creating object 
    // shown in step 4 
    
    list.add(pd1); // add new object of group to list. 
    

나는이 y로 도움이되기를 바랍니다 귀하의 목표를 달성하기 위해 ou. 질문이 있으면 그냥 물어보십시오. 행운을 빌어 요

관련 문제