2011-02-10 7 views
1

이것은 "더 나은"토론이 아닙니다.자바 라인 IO 대 C++ IO?

나는 C++ 프로그래머이며, Java 파일 IO를 수행하는 방법을 알지 못해서 매우 바보 같다고 느낍니다.

나중에 읽을 수 있도록 여러 데이터 유형을 파일에 저장해야합니다. 여기에는 정수와 가변 길이의 문자열이 포함됩니다. C++에서

은, 난 그냥 사용할 수 있습니다

//wont actually know the value of this 
string mystr("randomvalue"); 
//the answer to the Ultimate Question of Life, the Universe, and Everything 
int some_integer = 42; 

//output stream 
ofstream myout("foo.txt"); 
//write the values 
myout << mystr << endl; 
myout << some_integer << endl; 

//read back 
string read_string; 
int read_integer; 

//input stream 
ifstream myin("foo.txt"); 
//read back values 
//how to do accomplish something like this in Java? 
myin >> read_string; 
myin >> read_integer; 

감사합니다 아주 많이!

+1

++'문자열) (read_string,'brackats를 제거하거나 문자열 전에'class' 키워드를 추가해야합니다 문자열이 아니라 string.You의 해상력을 반환하는 함수의 선언입니다. – UmmaGumma

+0

[스캐너] (http://download.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html)는'>>'과 유사한 것들을 도울 수 있습니다. 각 라인을 읽고 수동으로 변환하는 것이 덜 고통 스럽습니다. –

+0

'string read_string();'이 명백하게 생각하는 것을 수행하지 않으므로 C++ 예제가 손상되었습니다. 또한 "randomvalue"대신에 "random value"를 사용하면 어떻게 될지 알고 있습니까? – 6502

답변

5

Java의 경우 원시 이진 I/O에는 InputStream 또는 OutputStream을 사용합니다. 기능을 추가하기 위해 위에 다른 I/O 유형을 작성합니다. 예를 들어, BufferedInputStream을 사용하여 임의의 입력 스트림을 버퍼링 할 수 있습니다. 바이너리 데이터를 읽거나 쓸 때 원시 입력 및 출력 스트림 위에 DataInputStream 또는 DataOutputStream을 만드는 것이 편리하기 때문에 먼저 기본 형식을 바이트 표현으로 변환하지 않고도 모든 기본 유형을 직렬화 할 수 있습니다. 프리미티브 이외에 객체를 직렬화 할 때 ObjectInputStreamObjectOutputStream을 사용합니다. 텍스트 입출력의 경우 InputStreamReader은 원시 바이트 스트림을 라인 기반 문자열 입력 (BufferedReader 및 FileReader도 사용할 수 있음)으로 변환하는 반면 PrintStream 을 사용하면 서식있는 텍스트를 원시 바이트 스트림에 쉽게 기록 할 수 있습니다. Java에서 I/O는 그보다 훨씬 더 많습니다. 그러나 그것들은 여러분을 시작해야합니다.

예 :

C에서
void writeExample() throws IOException { 
    File f = new File("foo.txt"); 
    PrintStream out = new PrintStream(
         new BufferedOutputStream(
          new FileOutputStream(f))); 
    out.println("randomvalue"); 
    out.println(42); 
    out.close(); 
} 

void readExample() throws IOException { 
    File f = new File("foo.txt"); 
    BufferedReader reader = new BufferedReader(new FileReader(f)); 
    String firstline = reader.readLine(); 
    String secondline = reader.readLine(); 
    int answer; 
    try { 
    answer = Integer.parseInt(secondline); 
    } catch(NumberFormatException not_really_an_int) { 
    // ... 
    } 
    // ... 

} 
+1

+1 ">>"에 대한 "관용적 인"Java는 [Scanner] (http://download.oracle.com/javase/1.5.0/docs/api/java/util/)라고 생각합니다. Scanner.html). –

3

당신은 이해해야합니다 basic 자바 파일 IO.

+0

이 링크는 좋은 것입니다. 한 곳에서 모든 내용. +1 – Nawaz