Урок 75. Хранение данных. Работа с файлами.

Обсуждение уроков
Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение KamiSempai » 26 апр 2013, 13:17

Судя по документации этим должен заниматься DocumentBuilder.
Очевидно, документ можно получить следующим способом:

[syntax=java]Document doc = DocumentBuilder.parse(openFileInput(Splash.selectedFromList)));[/syntax]

PS: Можно по подробнее, что за Document и где его можно использовать?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

grecd
Сообщения: 19
Зарегистрирован: 08 мар 2013, 14:36

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение grecd » 13 май 2013, 16:01

Кто нибудь сталкивался с Диалогом для сохранения файла? Чтобы пользователь ввел имя файла и выбрал где сохранить файл.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Foenix » 13 май 2013, 16:27

да, в сети полно примеров диалогов открытия файла или папки (что требуется в этом случае).
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

grecd
Сообщения: 19
Зарегистрирован: 08 мар 2013, 14:36

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение grecd » 15 май 2013, 09:43

Кто нибудь пробовал https://github.com/twig/Android-File-Dialog ?
к сожалению нету примеров использования

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Foenix » 15 май 2013, 13:32

а что мешает попробовать?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

grecd
Сообщения: 19
Зарегистрирован: 08 мар 2013, 14:36

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение grecd » 15 май 2013, 19:18

Foenix писал(а):а что мешает попробовать?
попробовал, не могу разобраться как вызывать

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Foenix » 15 май 2013, 19:25

если будет актуально чуть позже напишу чем я пользовалась, я просто не с того компа сейчас.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Z11
Сообщения: 9
Зарегистрирован: 05 июн 2013, 19:12

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Z11 » 06 июн 2013, 08:00

v_grechka писал(а):Для того, чтобы побороть кодировку можно испоьзовать такую конструкцию

Код: Выделить всё

FileInputStream fis = new FileInputStream(sdFile);
    	  
        BufferedReader  br = new BufferedReader(new InputStreamReader(fis, "windows-1251"));
вместо

Код: Выделить всё

BufferedReader br = new BufferedReader(new FileReader(sdFile));
Помогите начинающему
С помощью вышеуказаного кода получилось прочитать файл созданный в кодировке "windows-1251".
Подскажите аналогичный код чтобы записать файл в кодировке "windows-1251"
Записать файл в utf-8 получилось.

Z11
Сообщения: 9
Зарегистрирован: 05 июн 2013, 19:12

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Z11 » 06 июн 2013, 14:24

у меня все получилось.
Вот код.
Может кому пригодится

Код: Выделить всё

    static public void setContents(File aFile, String aContents) 
            throws FileNotFoundException, IOException {
        
    	if (aFile == null) {
    		throw new IllegalArgumentException("File should not be null.");
    	}
    	if (!aFile.exists()) {
    		throw new FileNotFoundException ("File does not exist: " + aFile);
    	}
    	if (!aFile.isFile()) {
    		throw new IllegalArgumentException("Should not be a directory: " + aFile);
    	}
    	if (!aFile.canWrite()) {
    		throw new IllegalArgumentException("File cannot be written: " + aFile);
    	}
    	 OutputStream out = new FileOutputStream(aFile );
    	 OutputStreamWriter  output = new OutputStreamWriter(out, "windows-1251");
 		try {
 			output.write(aContents);
 		}
 		finally {
 			output.close();
 		}
    	 
    }
    


beast1983
Сообщения: 3
Зарегистрирован: 22 май 2012, 18:25

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение beast1983 » 14 июл 2013, 15:45

Народ а не кто не пробовал копировать например с HTTP в File ???
например с http://priroda.inc.ru/design/privet/privet5.gif
и сохранить в /mnt/sdcard/privet5.gif
может кто знает как решить этот пример? :)

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Foenix » 14 июл 2013, 17:21

beast1983 писал(а):Народ а не кто не пробовал копировать например с HTTP в File ???
например с http://priroda.inc.ru/design/privet/privet5.gif
и сохранить в /mnt/sdcard/privet5.gif
может кто знает как решить этот пример? :)
Попробуй так

Код: Выделить всё

URL url = new URL("http://priroda.inc.ru/design/privet/privet5.gif"); 
File file = new File(fileName);
А затем так

Код: Выделить всё

 URLConnection ucon = url.openConnection();
    ...
    ByteArrayBuffer baf = new ByteArrayBuffer(50);
    int current = 0;
    while ((current = bis.read()) != -1) {
       baf.append((byte) current);
    }
А затем у тебя уже будут байтики, которые можно записать в файл

Код: Выделить всё

FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.close();
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

beast1983
Сообщения: 3
Зарегистрирован: 22 май 2012, 18:25

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение beast1983 » 14 июл 2013, 19:05

Огромное спасибо,Foenix! А не знаешь как по сети копировать? например с IP 192.168.0.2 и обратно? :) Но возможно логин и пароль.
просто хочу научиться копировать сегодня по тем протоколам которым можно!
(название например такое же privet5.gif)

У меня что то типа такого получилось

1) Мой пример Копирования с HTTP в SdCard
вызов из активити

Код: Выделить всё

	private void Ready() {
	  try {

		Downloader.readFileSD();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
фаил Downloader.java

Код: Выделить всё

	  static void readFileSD() throws IOException {
		String file_url = "http://priroda.inc.ru/design/privet/privet5.gif";
		  doInBackground(file_url);
}
	    
	        /**
	         * Downloading file in background thread
	         * */
	        protected static String doInBackground(String f_url) {
	            int count;
	            try {
	                URL url = new URL(f_url);
	                URLConnection conection = url.openConnection();
	                conection.connect();
	                // this will be useful so that you can show a tipical 0-100% progress bar
	                int lenghtOfFile = conection.getContentLength();
	 
	                // download the file
	                InputStream input = new BufferedInputStream(url.openStream(), 8192);
	 
	                // Output stream
	                OutputStream output = new FileOutputStream("/mnt/sdcard/programm/privet5.gif");
	 
	                byte data[] = new byte[1024];
	 
	                long total = 0;
	 
	                while ((count = input.read(data)) != -1) {
	                    total += count;
	                    // writing data to file
	                    output.write(data, 0, count);
	                }
	 
	                // flushing output
	                output.flush();
	 
	                // closing streams
	                output.close();
	                input.close();
	 
	            } catch (Exception e) {
	                Log.e("Error: ", e.getMessage());
	            }
	 
	            return null;
	        }

2) Мой пример Копирования внутри SdCard
в Активити вызов

Код: Выделить всё

	try {
	CopyFile.readFileSD();
	} catch (IOException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	}
CopyFiles.java

Код: Выделить всё

public class CopyFile{
	final static String FILENAME = "data.xml";//название файла считывания
	final static String FILENAME_SD = "data.xml";//название файла записи
	final static String src = "/mnt/sdcard/";//путь откуда копируем
	final static String dst = "/mnt/sdcard/programm/";//путь куда копируем

  static void readFileSD() throws IOException {
	
		  FileChannel source = null;
          FileChannel destination = null;
          source = new FileInputStream(src+FILENAME).getChannel();
          destination = new FileOutputStream(dst+FILENAME_SD).getChannel();
          if (destination != null && source != null) {
              destination.transferFrom(source, 0, source.size());
          }
          if (source != null) {source.close();   }
          if (destination != null) { destination.close();     }
	
}
	  
}



PS извеняюсь за лишнее в файле (попозже удалю как научусь еще по сетке копировать)

DaaarK
Сообщения: 1
Зарегистрирован: 26 июл 2013, 12:25

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение DaaarK » 26 июл 2013, 17:18

как работает ето я нипонил if (!copy(from + "/" + FilesList, to + "/" + FilesList)) и зачем

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Foenix » 26 июл 2013, 18:10

DaaarK писал(а):как работает ето я нипонил if (!copy(from + "/" + FilesList, to + "/" + FilesList)) и зачем

ето набег нипониломаторов на сайт.
Наверное это и есть "всплеск нагрузки" :mrgreen:
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

once2go
Сообщения: 8
Зарегистрирован: 01 май 2013, 20:29

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение once2go » 14 авг 2013, 13:21

Помогите разобраться а то запутался уже...
В общем есть код для аплоад файла на сервер
файл берет со строк final
final String uploadFilePath = "/mnt/sdcard/";
final String uploadFileName = "service_lifecycle.png";
но хочу я сохранять файл statistic.xml (преференс который будет лежать в .raw папке)...но как я не химичил никак не получается сделать такую процедуру (а точнее присвоить файл пас папки рав и имя файла )
напишите плиз как правильно указать путь

Аватара пользователя
Beeyan
Сообщения: 4
Зарегистрирован: 11 сен 2013, 23:35

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Beeyan » 23 окт 2013, 18:09

Здравствуйте, помогите разобраться, не удается записать файл на СД.
логи:
  • 10-23 15:08:56.493: D/myLogs(14745): /mnt/sdcard/MyFiles
    10-23 15:08:56.513: D/myLogs(14745): eror1 java.io.FileNotFoundException: /mnt/sdcard/MyFiles/fileSD: open failed: ENOENT (No such file or directory)
    10-23 15:08:56.513: W/System.err(14745): java.io.FileNotFoundException: /mnt/sdcard/MyFiles/fileSD: open failed: ENOENT (No such file or directory)
    10-23 15:08:56.592: W/System.err(14745): at libcore.io.IoBridge.open(IoBridge.java:416)
    10-23 15:08:56.592: W/System.err(14745): at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
    10-23 15:08:56.603: W/System.err(14745): at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
    10-23 15:08:56.603: W/System.err(14745): at java.io.FileWriter.<init>(FileWriter.java:42)
    10-23 15:08:56.603: W/System.err(14745): at com.example.p0751_files.MainActivity.writeFileSD(MainActivity.java:106)
    10-23 15:08:56.603: W/System.err(14745): at com.example.p0751_files.MainActivity.onclick(MainActivity.java:45)
    10-23 15:08:56.613: W/System.err(14745): at java.lang.reflect.Method.invokeNative(Native Method)
    10-23 15:08:56.613: W/System.err(14745): at java.lang.reflect.Method.invoke(Method.java:511)
    10-23 15:08:56.634: W/System.err(14745): at android.view.View$1.onClick(View.java:3594)
    10-23 15:08:56.634: W/System.err(14745): at android.view.View.performClick(View.java:4204)
    10-23 15:08:56.643: W/System.err(14745): at android.view.View$PerformClick.run(View.java:17355)
    10-23 15:08:56.663: W/System.err(14745): at android.os.Handler.handleCallback(Handler.java:725)
    10-23 15:08:56.663: W/System.err(14745): at android.os.Handler.dispatchMessage(Handler.java:92)
    10-23 15:08:56.663: W/System.err(14745): at android.os.Looper.loop(Looper.java:137)
    10-23 15:08:56.683: W/System.err(14745): at android.app.ActivityThread.main(ActivityThread.java:5041)
    10-23 15:08:56.683: W/System.err(14745): at java.lang.reflect.Method.invokeNative(Native Method)
    10-23 15:08:56.703: W/System.err(14745): at java.lang.reflect.Method.invoke(Method.java:511)
    10-23 15:08:56.703: W/System.err(14745): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    10-23 15:08:56.713: W/System.err(14745): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    10-23 15:08:56.723: W/System.err(14745): at dalvik.system.NativeStart.main(Native Method)
    10-23 15:08:56.723: W/System.err(14745): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
    10-23 15:08:56.763: W/System.err(14745): at libcore.io.Posix.open(Native Method)
    10-23 15:08:56.763: W/System.err(14745): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
    10-23 15:08:56.783: W/System.err(14745): at libcore.io.IoBridge.open(IoBridge.java:400)
    10-23 15:08:56.783: W/System.err(14745): ... 19 more
код копия урока, разрешение в манифест добавил.
  • <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.p0751_files"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />


    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:permission="android.permission.WRITE_EXTERNAL_STORAGE">
    <activity
    android:name="com.example.p0751_files.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    </application>

    </manifest>
sdPath.getAbsolutePath() являет собой такой вот путь- /mnt/sdcard/MyFiles , однако папки MyFiles в /mnt/sdcard/ у меня нет и не создается.
На эмуляторе СД карта "есть"

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Foenix » 23 окт 2013, 21:13

/mnt/sdcard/MyFiles/fileSD
нет такого файла, или папки.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

mcprograms
Сообщения: 2
Зарегистрирован: 24 окт 2013, 15:25

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение mcprograms » 24 окт 2013, 15:28

Помогите!
Сделал все правильно, файл берется из Assets, отлично читается, английские символы выводятся, а кириллические - нет...
ЗЫ: место них выводятся черные ромбики с знаком вопроса внутри.
Заранее спасибо

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение trew » 24 окт 2013, 18:20

mcprograms писал(а):Помогите!
Сделал все правильно, файл берется из Assets, отлично читается, английские символы выводятся, а кириллические - нет...
ЗЫ: место них выводятся черные ромбики с знаком вопроса внутри.
Заранее спасибо
Перед тем как положить файл в папку Assets, необходимо открыть его программой Блокнот.
Файл - Сохранить как -(кодировка) UTF-8
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

mcprograms
Сообщения: 2
Зарегистрирован: 24 окт 2013, 15:25

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение mcprograms » 24 окт 2013, 18:49

trew писал(а):
mcprograms писал(а):Помогите!
Сделал все правильно, файл берется из Assets, отлично читается, английские символы выводятся, а кириллические - нет...
ЗЫ: место них выводятся черные ромбики с знаком вопроса внутри.
Заранее спасибо
Перед тем как положить файл в папку Assets, необходимо открыть его программой Блокнот.
Файл - Сохранить как -(кодировка) UTF-8
Ура помогло)) Забыл сначала на F5 нажать;)
Лови спасибо)

Ответить