2016-06-04 2 views
0

파일을 만들고 데이터를 저장하려고합니다. 그런 다음 특정 데이터를 읽을 수 있도록하고 싶습니다.파일을 만들고 특정 데이터를 꺼내십시오.

그래서 여기에 파일을 만들고 여는 코드가 있습니다. 리드() 이후

public void createFile(View view) throws IOException { 
    String FILENAME = "hello_file"; 
    String string = "hello world"; 
    FileOutputStream fos = openFileOutput(FILENAME,Context.MODE_APPEND); 
    fos.write(string.getBytes()); 
    fos.close(); 
} 

public void openFile(View view) throws IOException{ 
    String FILENAME = "hello_file"; 
    FileInputStream g = openFileInput(FILENAME); 
    System.out.println(g.read()); 
    g.close(); 
} 

는 int를 반환하며 값 I가 정확한 이해 경우 한 번에 하나의 비트가 저장되는 문자열이다.

구문 분석을 선택해야합니까?

+0

당신은 내가 설정 한 기준이 링크 http://www.tutorialspoint.com/java/io/fileinputstream_read.htm – mgcaguioa

답변

0

내가 현재 읽고 안드로이드에서 파일에 쓰기이 두 가지 방법을 사용하십시오

public String readFromInternalFile(String fileName) throws IOException { 
    InputStream fis = context.openFileInput(fileName); 
    ObjectInputStream ois = new ObjectInputStream(fis); 

    String readData = ois.readObject().toString(); 


    return readData; 
} 



public void writeToInternalFile(String text, String fileName) { 
    try { 
     OutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(text); 
     fos.close(); 
     oos.close(); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 

    } 
} 

두 번째 방법은 외부 저장 장치에 그렇게하지 내부 파일에 오브젝트를 작성하고 첫 번째는 너무 객체를 읽는다. 여기서는 객체를 String으로 읽으려고하지만 이것은 물론 파일에 쓴 객체의 유형에 달려 있습니다. readFromInternalFile의 반환 방법을 바꾸고 Object으로 변경하고 에서 Object objectToWrite으로 인수를 변경하여 동일한 방법으로 파일에 개체를 쉽게 읽고 쓸 수 있습니다.

그래서 보편적 읽기 및 방법을 쓰기 당신은해야합니다 :

public Object readFromInternalFile(String fileName) throws IOException { 
    InputStream fis = context.openFileInput(fileName); 
    ObjectInputStream ois = new ObjectInputStream(fis); 

    Object readData = ois.readObject(); 


    return readData; 
} 



public void writeToInternalFile(Object objectToWrite, String fileName) { 
    try { 
     OutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(objectToWrite); 
     fos.close(); 
     oos.close(); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 

    } 
} 
+0

를 확인하실 수 있습니다 기존 데이터에 데이터를 추가하려는 경우 Context.MODE_PRIVATE에서 MODE_APPEND로 변경하십시오. 그러나 이것은 일어나지 않는 것 같습니다. 수행해야 할 루핑이 있습니까? – mogren3000

+0

@alexandermogren이 경우에는 객체를 쓰고 있습니다. 따라서 기존 파일에 무언가를 추가하려면 먼저 파일을 읽고 종료 데이터에 내용을 추가 한 다음 다시 쓰십시오. –

관련 문제