【问题标题】:How to append data one by one in existing file in android?如何在android中的现有文件中一一追加数据?
【发布时间】:2015-08-25 06:33:01
【问题描述】:

如何在现有文件中一一追加数据?我正在使用以下代码..在文件中附加数据行顺序..如何解决这个问题?

    private String SaveText() {

    File sdCard = Environment.getExternalStorageDirectory();
    File dir = new File (sdCard.getAbsolutePath()+File.separator+"GPS");
    dir.mkdirs();

    String fname =  "gps.txt";
    File file = new File (dir, fname);

   FileOutputStream fos;
    try {

        fos = new FileOutputStream(file,true);
        OutputStreamWriter out=new OutputStreamWriter(fos);
        out.write(value1);
        out.close();
        fos.close();

        Toast.makeText(getApplicationContext(), "Saved lat,long", Toast.LENGTH_SHORT).show();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return dir.getAbsolutePath();
}

【问题讨论】:

  • 如果你使用 java 7 你可以试试Files.write...()

标签: android file-io java-io


【解决方案1】:

试试这个代码

    try{

        OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file,true), "UTF-8");
        BufferedWriter fbw = new BufferedWriter(writer);
        fbw.write(value1);
        fbw.newLine();
        fbw.close();
       Toast.makeText(getApplicationContext(), "Saved lat,long", Toast.LENGTH_SHORT).show();
    }
    catch (Exception e) {
        e.printStackTrace();
    }

【讨论】:

  • 我使用您的代码工作正常,但相同的值一一存储,这是为什么?
  • fbw.newLine();以便一一存储
  • 如果您的回答满意,请点击 +1 发帖
【解决方案2】:

复制并粘贴此代码。

public void SaveText(String sFileName, String sBody){
try
{
    File root = new File(Environment.getExternalStorageDirectory(), "Notes");
    if (!root.exists()) {
        root.mkdirs();
    }
    File gpxfile = new File(root, sFileName);
    FileWriter writer = new FileWriter(gpxfile);
    writer.append(sBody);
    writer.flush();
    writer.close();
    Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
}
catch(IOException e)
{
     e.printStackTrace();
     importError = e.getMessage();
     iError();
}}

【讨论】:

    【解决方案3】:

    JAVA 7 中您可以尝试:

           try {
    
                 Files.write(Paths.get(dir+File.separator+fname), latLng.getBytes(), StandardOpenOption.APPEND);
    
                } catch (IOException e) {
                    e.printStackTrace();
               }
    

    结帐漂亮的解释:here

    【讨论】:

    • Android 基于 Java 6,没有 java.nio.file 的反向移植
    猜你喜欢
    • 2015-05-28
    • 2016-06-07
    • 1970-01-01
    • 2020-11-23
    • 2011-02-19
    • 2013-11-21
    • 1970-01-01
    • 2013-09-29
    相关资源
    最近更新 更多