Я хочу повторно получить доступ к файлу, созданному в студии Android. Я нашел следующий фрагмент кода при обмене стеками
File root = android.os.Environment.getExternalStorageDirectory();
// See http://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder
File dir = new File(root.getAbsolutePath() + "/download");
File file = new File(dir, "myData.txt");
Насколько я понимаю, это создает файл с именем «myData.txt» в папке загрузки. Что я хочу сделать, так это передать "файл" в функцию в другом методе, например
public void onLocationChanged(Location location) {
ArrayList<Location> list = new ArrayList<>();
list.add(location);
GPX.writePath(file,"hello",list);
}
Как мне создать файловую переменную, которая обращается к текстовому файлу без фактического создания нового файла?
@greenapps В нем говорится, что файл символов не может быть разрешен, поскольку ссылка на файл находится в другом методе, он не может быть вызван в этом методе.
Так что это ошибка времени компиляции. Затем сделайте вашу файловую переменную глобальной или передайте ее следующей функции с дополнительным параметром File.
Но действительно ли вы хотите записывать в один и тот же файл gpx при каждом изменении местоположения? Как вы это делаете сейчас, похоже, что writePath () перезапишет весь файл. Похоже, ваш файл gpx будет содержать только последнее местоположение. Или это не так? Пожалуйста скажи нам.
Да, я хочу, чтобы к файлу gpx было добавлено несколько строк местоположений GPS, я не думал, что это переопределит все предыдущие местоположения. Я свяжу вам файл GPX.java (он не был написан самостоятельно, я нашел его на github). Вот он: pasted.co/0c686df1
Вы можете ссылаться на то, что хотите, но я не буду следить за этим. Пожалуйста, проверьте себя. Вы должны делать работу.
В чем же тогда цель этой ветки комментариев? Что было у вас мотивацией вообще прокомментировать? Ваш последний ответ содержит буквально 0 баллов. Вы задали мне вопрос в своем предпоследнем ответе, и я ответил на него, а также связал вас с дополнительным кодом. Я начинаю расспрашивать сообщество на этом сайте такими же ответами, как и ваш, если честно.
Да. Ответь на вопросы. Экспериментируйте. Выполнять работу. Это не служба отладки и не служба написания кода.
Вы не ответили на вопрос, который я задал, так что снова вы совершенно бесполезны в контексте этой беседы. Что касается сайта вопросов и ответов, то здесь пользователям, похоже, действительно нравится не отвечать на вопросы.
Это может быть. Но у вас есть много советов и подсказок. Итак, чтобы продолжить, вы попробуете их. И если у вас есть проблемы, вы публикуете свои проблемы и спрашиваете, что не так. Вот что нам здесь нравится.




File root = android.os.Environment.getExternalStorageDirectory();
// See http://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder
File dir = new File(root.getAbsolutePath() + "/download");
File file = new File(dir, "myData.txt");
Фактически он не создает физический файл. Он просто создает объект в памяти (на который ссылается file).
Затем вы можете использовать ссылку в своем методе для записи в физический файл, например:
public void onLocationChanged(File location) throws IOException {
ArrayList<File> list = new ArrayList<>();
list.add(location);
writeToFile("Text", location);
}
private static void writeToFile(String text, File file)
throws IOException {
try(BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
writer.write(text);
}
}
Если вы хотите использовать ссылку в своем методе, вы можете передать ссылку file вашему методу, который должен иметь некоторый код для записи текста в фактический файл:
GPX.writePath(file,"hello",list);
...
public static void writePath(File file, String n, List<Location> points) throws IOException {
...
try(BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
writer.write(n);
}
}
У меня уже есть отдельный класс, который записывает в файл (это будет файл gpx, который я просто тестирую с помощью txt). Я просто ищу способ передать ссылку в GPX.writePath, когда я уже создал ссылку другим методом. Как получить доступ к уже созданной ссылке для использования в методе LocationChanged.
@ user9558800, какой тип параметра файл в GPX.writePath(**file**,"hello",list);? Это java.lang.String?
@ user9558800 Проверьте обновленный ответ и посмотрите, поможет ли он.
Извините за поздний ответ, первый параметр на самом деле относится к типу файла, вот метод ................. public static void writePath (File file, String n, List <Location > баллы)
@ user9558800 Я обновил ответ примером использования ссылки file.
Проблема в том, что я не могу получить доступ к ссылке на файл, поскольку изначально я создаю переменную «File file» в другом методе, что делает ее недоступной в методе onLocationChanged. Мне нужно просто выяснить, как снова сослаться на тот же самый файл другим методом. Могу ли я просто повторить код, который я изначально использовал для создания ссылочной переменной в исходном методе?
Итак, если я понимаю вашу проблему, вы хотите записывать один отдельный файл для каждого вызова onLocationChanged. Все файлы должны находиться в одной папке, это правильно?
Нет, я хочу, чтобы в одной папке был один файл со всеми линиями gps /
Тогда решение должно заключаться в том, чтобы просто иметь члена со ссылкой file в вашей деятельности Android (если я не ошибаюсь). Вы можете поместить код для создания файлового объекта в метод onCreate. Тогда вы можете просто вызвать GPX.writePath(file,"hello",list);
GPX.writePath(**file**,"hello",list);. Просто перейдите на `GPX.writePath (file," hello ", list);`