2010-01-12 8 views
5

Java에서 .txt 파일을 읽고 모든 줄에 정수, 문자열 및 이중 수가 포함되어 있으면 모든 줄을 배열에 넣을 수 있습니까? 그리고 모든 라인에는 단어/숫자의 양이 다릅니다.자바에서 텍스트 파일 읽기

나는 자바의 완전한 멍청한 놈이다.이 질문이 좀 어리 석다면 미안해.

감사

+1

각 라인마다 정확히 무엇을 하시겠습니까? –

+0

이 질문은 당신을 도울 것입니다 : http://stackoverflow.com/questions/224952 –

+0

@Fabian Steeg : 당신이 링크 한 질문은 이와 같이 다른 데이터 유형을 다루는 것을 다루지 않습니다. – Powerlord

답변

2

귀하의 질문은 매우 명확하지 않다, 그래서 오직 "읽기"부분에 대해 답변 해 드리겠습니다 :

List<String> lines = new ArrayList<String>(); 
BufferedReader br = new BufferedReader(new FileReader("fileName")); 
String line = br.readLine(); 
while (line != null) 
{ 
    lines.add(line); 
    line = br.readLine(); 
} 
+2

당신을 잊었다 br.close() –

11

아무도에 대해 알고하지 않는 Scanner 클래스를 시도하지만 거의 모든 작업을 수행 할 수 있습니다 텍스트.

는 파일에 대한 독자를 얻을 당신은 정말 인코딩을 지정해야합니다 그렇지 않으면 당신이 움라우트, 유니 코드 등이 발생했을 때 이상한 결과를 얻을 수

File file = new File ("...path..."); 
String encoding = "...."; // Encoding of your file 
Reader reader = new BufferedReader (new InputStreamReader (
    new FileInputStream (file), encoding)); 

... use reader ... 

reader.close(); 

을 사용합니다.

+0

+1 스캐너를 지적했다. 나는 전에 그것에 대해 듣지 못했다. 재미있는 수업. – JasCav

+1

"스캐너에 대해 아무도 모릅니다." 적어도 나를 위해 진실을 가졌다. 스캐너는 다음과 같이 사용할 수도 있습니다 : 스캐너 sc = 새 스캐너 (새 파일 ("fileName")); // 왜 그런 식으로 사용하지 않을까요? – sttaq

+0

@sttaq : 기본 인코딩을 사용하기 때문입니다. 데이터를 읽을 때 기본 인코딩을 사용하지 마십시오. 입력 내용을 항상 확인하거나 코드에서 허용하는 인코딩을 지정하십시오. 어느 쪽이든, 그것을 특정한 것으로 무너 뜨립니다. –

6

가장 쉬운 옵션은 Apache Commons IO JAR을 사용하고 org.apache.commons.io.FileUtils 클래스를 가져 오는 것입니다. 이 클래스를 사용할 때 많은 가능성이 있지만 가장 명백한 것은 다음과 같습니다.

List<String> lines = FileUtils.readLines(new File("untitled.txt")); 

정말 쉽습니다.

"바퀴를 재발 명하지 마십시오."

1

사용되는 공통 :

String line = null; 
    File file = new File("readme.txt"); 

    FileReader fr = null; 
    try 
    { 
     fr = new FileReader(file); 
    } 
    catch (FileNotFoundException e) 
    { 
     System.out.println("File doesn't exists"); 
     e.printStackTrace(); 
    } 
    BufferedReader br = new BufferedReader(fr); 

    try 
    { 
     while((line = br.readLine()) != null) 
    { 
     System.out.println(line); 
    } 
+1

스택 오버플로에 오신 것을 환영합니다! 귀하의 게시물 주셔서 감사합니다! 게시물에 서명/태그 라인을 사용하지 마십시오. 사용자 상자는 서명으로 간주되며 프로필을 사용하여 원하는 자신에 대한 정보를 게시 할 수 있습니다. [서명/태그 라인에 대한 FAQ] (http://stackoverflow.com/faq#signatures) 특히, 귀하의 게시물에 스팸으로 신고 될 수 있으므로 귀하의 웹 사이트 URL을 포함하지 마십시오. –

0

을 모두 user248921 첫째 @, 당신은 문자열 배열에서 아무것도 저장할 수 있습니다, 그래서 당신은 문자열 배열을 만들고 당신이 원하는 때마다 코드에서 배열 사용 가치에 선을 저장할 수 있습니다 . 당신은 배열에 이질적 인 (string, int, boolean, 등등을 포함하는) 선을 저장하기 위해 아래 코드를 사용할 수 있습니다.

public class user { 
public static void main(String x[]) throws IOException{ 
    BufferedReader b=new BufferedReader(new FileReader("<path to file>")); 
    String[] user=new String[500]; 
    String line=""; 
    while ((line = b.readLine()) != null) { 
    user[i]=line; 
    System.out.println(user[1]); 
    i++; 
    } 

} 
}