Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在内存中的csv文件中创建并保存传感器数据_Java_Android - Fatal编程技术网

Java 如何在内存中的csv文件中创建并保存传感器数据

Java 如何在内存中的csv文件中创建并保存传感器数据,java,android,Java,Android,我试图在内部存储器的文件中获取加速计数据,我尝试了许多方法,但我得到了一些错误,如java.io.FileNotFoundException:Value.csv:open failed:EROFS(只读文件系统)或ESIDIR @RequiresApi(api = Build.VERSION_CODES.N) public class MainActivity extends Activity implements SensorEventListener,View.OnClickListener

我试图在内部存储器的文件中获取加速计数据,我尝试了许多方法,但我得到了一些错误,如java.io.FileNotFoundException:Value.csv:open failed:EROFS(只读文件系统)或ESIDIR

@RequiresApi(api = Build.VERSION_CODES.N)
public class MainActivity extends Activity implements SensorEventListener,View.OnClickListener {

private TextView xText, yText, zText;
private Sensor sensor;
private SensorManager sManager;
private Button startB, stopB;
private boolean mInitialized;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //Create sensor manager
    sManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    // Accelerometer sensor
    sensor = sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    //Register sensor Listener
    sManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    // assign Textview
    xText = (TextView) findViewById(R.id.xText);

    Button startButton = (Button) findViewById(R.id.startB);
    Button stopButton = (Button) findViewById(R.id.stopB);
    startButton.setOnClickListener(this);
    stopButton.setOnClickListener(this);
    mInitialized = false;
}

public void onResume() {
    super.onResume();
    sManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}

protected void onPause() {
    super.onPause();
    sManager.unregisterListener(this);
}


public void onAccuracyChanged(Sensor sensor, int acc) {
}


public void onSensorChanged(SensorEvent event) {
    xText.setText(" X  :" + Float.toString(event.values[0]) + "\n" +
            " Y  :" + Float.toString(event.values[1]) + "\n" +
            " Z :" + Float.toString(event.values[2]));

    try {
        writeToCsv(Float.toString(event.values[0]), Float.toString(event.values[1]), Float.toString(event.values[2]));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void onClick(View v) {
    switch (v.getId()) {
        case R.id.startB:
            sManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
            break;
        case R.id.stopB:
            sManager.unregisterListener(this);
            break;
    }
}

public void writeToCsv(String x, String y, String z) throws IOException {
    Calendar c = Calendar.getInstance();

    File path = Environment.getDataDirectory();
    boolean success = true;
    if (!path.exists()) {
        success = path.mkdir();
    }
    if (success) {
        String csv = "Value.csv";
        FileWriter file_writer = new FileWriter(csv, true);
        String s = c.get(Calendar.HOUR) + "," + c.get(Calendar.MINUTE) + "," + c.get(Calendar.SECOND) + "," + c.get(Calendar.MILLISECOND) + "," + x + "," + y + "," + z + "\n";
        file_writer.append(s);
        file_writer.close();

    }
}

}
将传递路径/数据。正如您所看到的,它既不可读也不可写。例如,改为

File path = getFilesDir();

抱歉,首先,是否要尝试在文件编写器中使用该
path
变量?否则,你为什么要费心制作文件夹呢?是的,我很想,但我不明白怎么做,每次我通过尝试教程中看到的东西来更改代码时,都会出现错误,所以我查看了如何修复,但它不起作用。
File path = getFilesDir();