2011-09-12 5 views
1

내 기록 개체에는 2 개의 필드 (ID + 이름) 만 있습니다. 나는 그들을 구해야한다. 키 - 값 쌍을 저장하기에 적합하기 때문에 sharedpreferences를 사용했습니다. 파일이 저장된 위치로 변경할 가능성이 없습니다. 나는 app의 사용자에게 모든 히스토리 항목을 삭제할 가능성을 부여하기를 원하기 때문에 sharedpref 폴더에 저장하고 싶지 않다. 어떤 파일이 기록 파일이고 어떤 파일이 응용 프로그램에서 사용되는 기본 설정 파일인지 확인해야합니다. 이건 쓸모가 없어.하지만 더러운. 다른 한편으로. 내 기록 파일은 sharedpref 폴더에 없어야한다. 그들은 그 폴더에서 할 일이 없다. ..android - 내역 및 자동 완성 값을 저장할 위치

다른 가능성은 xml과 같은 내부 저장소에 데이터를 저장하는 것이다. 나는 serializer와 파서를 써야 할 것이다.

제 3의 가능성 (나는이 질문을 쓰는 것을 기억하고 있습니다)은 Java Properties를 통해 그것을 저장하는 것입니다. 이것은 아마도 가장 쉬운 해결책 일 것입니다. 그것과 비슷한 sharedpref

마지막 가능성은 sqlite에 저장하는 것입니다. 나도 몰라. 내 데이터가 너무 작아. 그리고 내가 databae 그것을 저장하는 데 사용합니까?

제 질문은 간단합니다. 사용하는 이유는 무엇입니까? 너는 무엇을 사용하니? 동일한 질문이 자동 완성 값에 속합니다. id는 사용자가 텍스트 필드에 입력 한 값을 저장하려고합니다. 어디에서 구할 것인가? 그러한 데이터를 어디에 저장합니까? 사전

답변

0

에서

들으 당신은 다음과 같이 된 SharedPreferences 파일을 만듭니다 사용하여 역사에 대해 별도 된 SharedPreferences 파일 (예를 들어) Context.getSharedPreferences("history")을 만들 수 있습니다.

/data/data/com.your.package.name/shared_prefs/history.xml 

는하지만 모든 된 SharedPreferences 파일이 /data/data/com.your.package.name/shared_prefs/에서 생성 될 것으로 확신합니다. 나는 네가 그 위치를 바꿀 수 있다고 생각하지 않는다.

+0

하지만 단 하나의 기록 파일이 아닙니다. 나는 몇 가지 있습니다. 어쩌면 1..maybe 20 ..은 사용자에 달려 있습니다. 사용자가 특정 제품을 살펴볼 때마다 ... 기록 파일 항목을 추가해야합니다. 그렇습니다. 공유 된 참조 위치는 변경 될 수 없습니다! – imcurious

+0

그래서 사용자가 관련 제품을 볼 때 일련의 히스토리 파일을 적당한 이름으로 작성하면됩니다. – Torid

0

나는 객관식을 잘못 해석하고 있을지도 모르지만, 나는 이와 같이 단지 java.io.BufferedWriter의 BufferedWriter를 사용하여 각 개체에 대한 새로운 파일을 작성했습니다. 마찬가지로 BufferedReader를 사용하여 데이터를 읽을 수 있습니다. 코드가 같은 것을 보일 것이다 :이 예에서는

public static void save(FileIO files){ 
      BufferedWriter out = null; 
      try{ 
       //use a writer to make a file named after the object 
       out = new BufferedWriter(new OutputStreamWriter(
         files.writeFile(objectSomething))); 
       //the first line would be ID 
       out.write(Integer.toString(objectID)); 
       //second line would be the name 
       out.write(objectName) 
       //Theres two possible IOexceptions, 
       //one for using the writer 
       //and one for closing the writer 
      } catch (IOException e) { 
      } finally {try { 
       if (out != null) 
        out.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      } 

를, 내가 파일의 문자열 이름으로 "objectSomething"사용하고, objectID에와 개체 이름은 파일에 포함 된 각각 INT 및 문자열이다.

은 매우 간단,이 데이터를 읽을 수 있습니다 : 여기

public static void load(FileIO files) { 
     BufferedReader in = null; 
     try { 
      // Reads file called ObjectSomething 
      in = new BufferedReader(new InputStreamReader(
        files.readFile(ObjectSomething))); 

      // Loads values from the file one line at a time 
      varID = Integer.parseInt(in.readLine()); 
      varName = in.readLine(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (in != null) 
        in.close(); 
      } catch (IOException e) { 
      } 
     } 
    } 

, 난 당신이 응용 프로그램을 통해 당신의 코드에서 필요하다면 당신이 사용하는 것이이 클래스의 로컬 변수로 varID 및 변수 varName을 사용했습니다.