2013-05-12 109 views
0

我无法在手机上找到该文件。我想要一个桌面应用程序,可以读取我用手机保存的文件(加速度计数据),并且因为我对android开发非常陌生,所以我决定最简单的方法就是在文件系统中找到它,然后打开它通过我的桌面上:SerializeObject.WriteSettings在哪里写入文件? (路径)

SerializeObject.ReadSettings(this, "activityLibrary.dat"); 

我通过将文件保存在我的应用程序:

SerializeObject.WriteSettings(this, ser, "activityLibrary.dat"); 

我试图寻找与ES浏览器的应用程序文件系统,但它并没有找到我的文件。尝试与Windows搜索以及。任何人都可以帮忙吗?或者建议在我的手机和桌面之间移动此文件的另一种简单易懂的方式?

编辑:

我使用这个类对象序列化:

import java.io.BufferedReader; 
import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.OutputStreamWriter; 
import java.io.Serializable; 

import android.content.Context; 
import android.util.Base64InputStream; 
import android.util.Base64OutputStream; 
import android.util.Log; 

/** 
* Take an object and serialize and then save it to preferences 
* @author John Matthews 
* 
*/ 
public class SerializeObject { 
private final static String TAG = "SerializeObject"; 

/** 
* Create a String from the Object using Base64 encoding 
* @param object - any Object that is Serializable 
* @return - Base64 encoded string. 
*/ 
public static String objectToString(Serializable object) { 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    try { 
     new ObjectOutputStream(out).writeObject(object); 
     byte[] data = out.toByteArray(); 
     out.close(); 

     out = new ByteArrayOutputStream(); 
     Base64OutputStream b64 = new Base64OutputStream(out,0); 
     b64.write(data); 
     b64.close(); 
     out.close(); 

     return new String(out.toByteArray()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

/** 
* Creates a generic object that needs to be cast to its proper object 
* from a Base64 ecoded string. 
* 
* @param encodedObject 
* @return 
*/ 
public static Object stringToObject(String encodedObject) { 
    try { 
     return new ObjectInputStream(new Base64InputStream(
       new ByteArrayInputStream(encodedObject.getBytes()), 0)).readObject(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

/** 
* Save serialized settings to a file 
* @param context 
* @param data 
*/ 
public static void WriteSettings(Context context, String data, String filename){ 
    FileOutputStream fOut = null; 
    OutputStreamWriter osw = null; 

    try{ 
     fOut = context.openFileOutput(filename, Context.MODE_PRIVATE);  
     osw = new OutputStreamWriter(fOut); 
     osw.write(data); 
     osw.flush(); 
     //Toast.makeText(context, "Settings saved",Toast.LENGTH_SHORT).show(); 
    } catch (Exception e) {  
     e.printStackTrace(); 
     // Toast.makeText(context, "Settings not saved",Toast.LENGTH_SHORT).show(); 
    } 
    finally { 
     try { 
      if(osw!=null) 
       osw.close(); 
      if (fOut != null) 
       fOut.close(); 
     } catch (IOException e) { 
       e.printStackTrace(); 
     } 
    } 
} 

/** 
* Read data from file and put it into a string 
* @param context 
* @param filename - fully qualified string name 
* @return 
*/ 
public static String ReadSettings(Context context, String filename){ 
    StringBuffer dataBuffer = new StringBuffer(); 
    try{ 
     // open the file for reading 
     InputStream instream = context.openFileInput(filename); 
     // if file the available for reading 
     if (instream != null) { 
      // prepare the file for reading 
      InputStreamReader inputreader = new InputStreamReader(instream); 
      BufferedReader buffreader = new BufferedReader(inputreader); 

      String newLine; 
      // read every line of the file into the line-variable, on line at the time 
      while ((newLine = buffreader.readLine()) != null) { 
       // do something with the settings from the file 
       dataBuffer.append(newLine); 
      } 
      // close the file again 
      instream.close(); 
     } 

    } catch (java.io.FileNotFoundException f) { 
     // do something if the myfilename.txt does not exits 
     Log.e(TAG, "FileNot Found in ReadSettings filename = " + filename); 
     try { 
      context.openFileOutput(filename, Context.MODE_PRIVATE); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } catch (IOException e) { 
     Log.e(TAG, "IO Error in ReadSettings filename = " + filename); 
    } 

    return dataBuffer.toString(); 
} 

} 
+0

有Android中没有的Java方法以大写字母开始,并没有'WriteSettings()'方法在Android中的任何资本。也许你可能会考虑为你自己的'WriteSettings()'方法发布代码,或者改变你的标签以删除'java'并添加你正在使用的实际编程环境。 – CommonsWare 2013-05-12 17:44:24

+0

我添加了我用于序列化的类。 – LucasSeveryn 2013-05-12 17:49:34

回答

1

openFileOutput保存文件/data/data/your.package.name/files/目录。

使用Context.getExternalFilesDirEnvironment.getExternalStorageDirectory轻松访问文件复制到电脑或邮寄自己。

+0

@LucasSeveryn:请注意,您不能访问设备上的此目录,除非通过设备生成或使用'adb shell'。如果您希望能够将文件传输到桌面,请使用外部存储。 – CommonsWare 2013-05-12 17:54:08

+0

你有没有关于如何将这个文件保存在外部存储上的提示? – LucasSeveryn 2013-05-12 17:55:27