android bufferedwriter – не удается найти текстовый файл

Я новичок в программировании (только что изучил Java несколько месяцев назад) и обычно находил много помощи в Интернете, просматривая здесь, но на этот раз я довольно озадачен.

Я пытаюсь сохранить данные датчика на своем телефоне Android в текстовом файле в хранилище и позже извлечь текстовый файл с помощью USB-кабеля. Однако после запуска приложения на телефоне я не могу найти его в папках во внутренней памяти.

Я включил эту строку в свой манифест, чтобы исключить проблему с разрешениями.

    <uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Булево значение save_data запускается, когда я нажимаю кнопку на экране, и я убедился, что кнопка работает, отображая включение/выключение на моем экране при нажатии кнопки.

public void onSensorChanged(SensorEvent event) {
synchronized (this) {
    switch (event.sensor.getType()) {
    case Sensor.TYPE_ACCELEROMETER: 
        A_x_value.setText(Float.toString(event.values[0]));
        A_y_value.setText(Float.toString(event.values[1]));
        A_z_value.setText(Float.toString(event.values[2]));

        if (save_data == true) {
            SaveButton_Label.setText("On");

            String datastring = "A: " + Float.toString(event.values[0]) + " " + Float.toString(event.values[1]) + " " + Float.toString(event.values[2]);
            try
            {
                File f = new File("sensordata.txt");
                FileWriter fr = new FileWriter(f);
                BufferedWriter out = new BufferedWriter(fr);
                out.write(datastring);
                out.close();
            }

            catch (IOException e)
            {
                System.out.println("Exception");
            }

        } else {
            SaveButton_Label.setText("Off");
        }
        break;
    }
}

}

Я ценю любую помощь, которую вы, ребята, можете предоставить. Спасибо!


person Nate Chang    schedule 08.04.2013    source источник


Ответы (2)


Когда вы создаете новый экземпляр файла, вы должны определить весь путь, включая путь к внешнему хранилищу.

File f = new File(Environment.getExternalStorageDirectory().getPath(), "sensordata.txt");
person fenix    schedule 08.04.2013
comment
Привет, спасибо за помощь, но я все еще не могу найти текстовый файл. Я также не мог найти папку приложения во внутренней памяти, когда я мог ясно видеть папки приложений для других приложений на моем телефоне ... так может ли это быть проблемой, большей, чем просто код? Я играл внутри пакета myfirstapp с веб-сайта Android (разработчик .android.com/training/basics/firstapp/) и запустить его на реальном устройстве, а не на эмуляторе. Спасибо - person Nate Chang; 08.04.2013
comment
Спасибо за помощь. Это сработало дважды, но я удалил текстовый файл, чтобы попробовать еще раз, и с тех пор это не сработало. Для меня не имеет смысла, что это невозможно повторить, есть мысли? - person Nate Chang; 08.04.2013
comment
Вы не можете увидеть папку своего приложения, если у вас нет root-доступа. Если вы видите какие-то папки приложений во внутренней памяти, это папки для другой цели. Если вы рутируете свой телефон / планшет, вы получите доступ к папке mnt / data / data, поэтому вы увидите все установленные приложения в папках с именами пакетов (com.something.someapp). Попробуйте сделать для себя какую-нибудь тестовую папку и поместить в нее новый файл, например new File(Environment.getExternalStorageDirectory().getPath()+/test/+sensordata.txt); - person fenix; 08.04.2013
comment
Я обнаружил, что если я просто выключу/включу телефон, то теперь смогу увидеть текстовый файл. Очень странный. Спасибо за вашу помощь! - person Nate Chang; 14.04.2013

person    schedule
comment
Спасибо за помощь. Это сработало дважды, но я удалил текстовый файл, чтобы попробовать еще раз, и с тех пор это не сработало. Для меня не имеет смысла, что это невозможно повторить, есть мысли? - person Nate Chang; 08.04.2013
comment
конечно, это будет работать, он будет воссоздавать файл каждый раз, возможно, вы измените некоторые другие коды - person Viswanath Lekshmanan; 08.04.2013