powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
7 сообщений из 7, страница 1 из 1
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
    #38386985
sirj77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая задачка:
есть файл A.txt, в котором есть разные строки; нужно скопировать содержимое файла A.txt в файл B.txt, но что бы скопированные строки были в отсортированном порядке по длине.
Сделал, только вот сортировку не знаю как сделать.

Плюс к заданию: добавить возможность указывать исходный файл, целевой файл и направление сортировки (восходящая или спадающая) в командной строке, например так:
java SortFile aa.txt bb.txt asc
, где SortFile — класс, который мы запускаем, aa.txt — исходный файл, bb.txt — целевой файл, asc или desc — направление сортировки.

Спасибо за помощь!
Если нужен листинг, могу выслать.
...
Рейтинг: 0 / 0
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
    #38386999
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А проблема-то какая? Считаем длины строк. Сортируем. Копируем строки в порядке полученом после сортировки. Такой сложный алгоритм? Или какие-то ещё условия есть? Например большой объем файла.
...
Рейтинг: 0 / 0
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
    #38387016
sirj77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да нет, совсем простая задача, но я только начинаю :)
На словах то понятно..

Примерно можешь написать на джава как это реализовать в моем коде?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
public static void main (String[] args) {
		
		File fi = new File("aa.txt");
		if (fi.exists()) {
			//fi.delete();
			System.out.println("File aa.txt exists");
		}
		if (!fi.exists()) {
			try {
				fi.createNewFile();
				System.out.println("File aa.txt has been created");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		File fo = new File("bb.txt");
		if (fo.exists()) {
			fo.delete();
			System.out.println("File bb.txt has been deleted");
		}
		if (!fo.exists()) {
			try {
				fo.createNewFile();
				System.out.println("File bb.txt has been created");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		InputStream is = null;
		OutputStream os = null;
		
		try {
			is = new FileInputStream(fi);
			os = new FileOutputStream(fo);
			
			int b;
			while ((b = is.read()) != -1) {
			os.write(b);
			}
			
			System.out.println("The content of the file aa.txt is copied to the file bb.txt");
			
			/*int b = is.read();
			while (b != -1) {
				os.write(b);
				b = is.read();
			}*/
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (os != null) {
				try {
					os.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

...
Рейтинг: 0 / 0
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
    #38387019
DEVcoach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, задачка может быть интересной в плане нахождения оптимального решения под какие-то конкретные условия. Например, вот два крайних варианта:
1) Пройтись по всему файлу N раз, где N - количество строк, на каждом чтении выбирая следующую по длине. Памяти минимум надо, на работать будет очень долго.
2) Чистый in-memory: вычитать все в память за раз, потом отсортировать. Очень быстро, но загадит память.

Ну а дальше можно выдумавать все, что угодно. Например, пройтись по файлу, подсчитать и запомнить длины строк. Потом отсортировать только длины, запомнив их изначальный позиции, а потом пройтись несколько раз по файлу, но выбирая не по одной строке, а по несколько, укладывающихся в последовательность.
Короче говоря, тут надо фантазию подключать и помнить про алгоритмическую сложность и потребление памяти.
...
Рейтинг: 0 / 0
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
    #38387021
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем:
https://www.google.com/search?q=Java file to string array
Сортируем:
https://www.google.com/search?q=Java sort array with comparator
Куча готового кода по ссылкам выше.
...
Рейтинг: 0 / 0
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
    #38387025
sirj77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Буду разбираться
...
Рейтинг: 0 / 0
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
    #38387030
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DEVcoachКороче говоря, тут надо фантазию подключать и помнить про алгоритмическую сложность и потребление памяти.
Достаточно оптимальным и простым решением будет сканировние файла на перенос строки. Из чего получается список позиций и длин. Затем сортировка позиций по длине. Даже для огромных файлов, структура будет не такой уж и большой, кроме клинических случаев. Затем вычитывать уже отсортированые позиции из структуры и копировать строки, читая из RandomAccessFile.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]