2013-05-07 4 views
0

일부 데이터를 저장하려면 아래 함수를 사용하고 있습니다. mydata는 사용자가 입력하는 이중 목록이고 dates_Strings는 문자열 형식의 날짜를 포함하는 list (데이터 유형은 String)입니다. "2"+ 저장 "3"+ 저장 + "4"+,파일을 저장하면 많은 변수가 생성됩니다.

예를 들어

것은 내가 "1"+ 저장 입력하는 경우 :

public void savefunc(){ 

     SimpleDateFormat thedate = new SimpleDateFormat("dd/MM/yyyy",Locale.US); 
     Date d=new Date(); 
     String formattedDate=thedate.format(d); 
     dates_Strings.add(formattedDate); 


     double thedata=Double.parseDouble(value.getText().toString().trim()); 
     mydata.add(thedata); 

     File sdCard = Environment.getExternalStorageDirectory(); 
     File directory = new File (sdCard, "MyFiles"); 
     directory.mkdirs();    
     File file = new File(directory, filename); 

     FileOutputStream fos; 


     try { 
      fos = new FileOutputStream(file,true); 

       BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos)); 
       for (int i=0;i<mydata.size();i++){ 
        bw.write(mydata.get(i)+","+dates_Strings.get(i)+"\n"); 
       } 
       value.setText(""); 
       bw.flush(); 
       bw.close(); 

      } catch (IOException e2) { 
       e2.printStackTrace(); 
       }//catch 
    } 

이제 문제는 다음을 저장할 때하는 일이다 > 07/05/13

1.0 - -> 07/05/13

,536 내가

1.0을 볼 수있는 파일에서 ...

을 저장

2.0 -> 07/05/13

3.0 -> 07/05/13

3.0 -> 07/05/13

4.0 -> 07/05/13

+0

를 작성하고 당신은 무엇을 일이 기대

대신

for (int i=0;i<mydata.size();i++){ bw.write(mydata.get(i)+","+dates_Strings.get(i)+"\n"); } 

의? – Thrakbad

+0

@Thrakbad : "1"을 2 회 또는 3 회가 아닌 한 번만 입력합니다. – George

+0

mydata가 선언 된 위치는 어디입니까? – TactMayers

답변

0
fos = new FileOutputStream(file,true); 

당신은 APPEND 플래그 FileOutputStream를 인스턴스화된다. mydata이 해제되지 않습니다 경우, 그 cotent 당신이 파일에 볼 수 무엇 savefunc

+0

: 처음에는 앱에서 데이터를 지우고 있습니다. 감사합니다. – George

+0

mydata는 어떤 종류입니까? mydata.add (thedata) 앞에 mydata.clear()를 시도하십시오. – Blackbelt

+0

: 알았어, 고마워. 나는 data.clear()를 함수 안에 넣어야했다. – George

1

당신이 파일 당신에게 myData을 쓸 때 때문에

1.0 -> 07/05/13 
1.0 -> 07/05/13 
2.0 -> 07/05/13 
1.0 -> 07/05/13 
2.0 -> 07/05/13 
3.0 -> 07/05/13 
1.0 -> 07/05/13 
2.0 -> 07/05/13 
3.0 -> 07/05/13 
4.0 -> 07/05/13 

그게 전부 같은 더 뭔가 호출하는 파일마다 쓸 것 전에 작성한 번호를 포함하여 항상 전체 목록을 작성하십시오. 그래서 첫 번째 저장은 1.0, 두 번째 저장은 1.02.0 등으로 기록됩니다. FileOutputStreamfos = new FileOutputStream(file,false);으로 인스턴스화하여이 문제를 해결하면 새 데이터를 파일에 추가하지 않고 덮어 씁니다. 또는 새로 추가 된 번호 만 추가 모드로 파일에 쓸 수도 있습니다. 당신의 유스 케이스에 따라 다르다.

편집 :에 의해 의미가이 같은 것입니다 만 수를 쓰기 무엇 : 당신은

bw.write(thedata + "," + formattedDate + "\n"); 
+0

: 네, 정확히이 파일입니다! 사용하고 싶기 때문에 데이터를 추가하고 싶습니다. 새로 추가 한 번호 만 추가 모드로 파일에 쓸 수 있습니다. "이해하지 못했습니다. 예제를 보여 주실 수 있습니까? 고마워요! – George

+0

내 대답 – Thrakbad

+0

을 편집하겠습니다 : 답변 주셔서 감사합니다. 그러나 나는 data.clear()를 사용하기를 선호합니다. :). 나는 upvoting입니다. – George

관련 문제