通过我的PC访问我的Android设备上的文本文件时,部分内容不会通过

时间:2017-02-09 15:15:11

标签: android

在我的Android应用程序中,我将值放到文本文件中,我已确认它有效。我可以在我的Android设备上打开文本文件并查看其中的所有数据。但是,当我通过USB将设备插入我的PC时,文本文件中的某些数据会被切断。

这是我打开文本文件时在Android设备上看到的数据: FALSE,FALSE,FALSE,NULL,NULL,FALSE,FALSE,NULL,NULL,60,67,FALSE,TRUE,如图1所示,假,4,1,

这是我在计算机上访问文本文件时看到的数据: FALSE,FALSE,FALSE,NULL,NULL,FALSE,FALSE,NULL,NULL,60,67,FALSE,TRUE,1,F

正如您所看到的,最后几段数据被切断了。我尝试过不同的数据,但仍然会被切断。

我不确定这是否会有所帮助,因为以下代码似乎确实将所有数据都提供给了文本文件(如果在我的Android设备上查找),但这里是写入文本的代码文件。我从之前创建的SharedPreferences文件中获取了两个数据列表,并在按下按钮时将它们写入文件。

SharedPreferences auto = getSharedPreferences("Auto", MODE_PRIVATE);
SharedPreferences teleop = getSharedPreferences("Teleop", MODE_PRIVATE);

autoValues = auto.getAll();
teleopValues = teleop.getAll();

public void writeToFile(View view){
    try {
        FileOutputStream stream = new FileOutputStream(myFile);
        for (Map.Entry<String, ?> entry : autoValues.entrySet()){
            stream.write(entry.getValue().toString().getBytes());
            stream.write(",".getBytes());
        }
        for (Map.Entry<String, ?> entry : teleopValues.entrySet()){
            stream.write(entry.getValue().toString().getBytes());
            stream.write(",".getBytes());
        }
        stream.close();
        System.out.println("SUCCESS: MAY HAVE WRITTEN TO FILE IN EXPORT");
    } catch (Exception e){
        e.printStackTrace();
        System.out.println("ERROR: DID NOT WRITE TO FILE");
    }
}

1 个答案:

答案 0 :(得分:0)

使用以下功能有效地写入您的文件。 您必须拥有访问外部存储空间的权限

public static void logToFile(String message) {
            String formattedData = String.format("%s", (new SimpleDateFormat("dd-MM HH:mm:ss", Locale.getDefault())
                    .format(new Date())) + "\t\t\t" + message + "\n");

            FileOutputStream stream = null;
            String path = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DOWNLOADS;
            try {
                File file = new File(path + "/Logger.txt");
                if (!file.exists()) {
                    file.createNewFile();
                }
                stream = new FileOutputStream(file, true);
                stream.write(formattedData.getBytes());
            } catch (IOException e) {
                e.printStackTrace();
            }
    }