0 / 0 / 0
Регистрация: 04.09.2013
Сообщений: 5

Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине

04.09.2013, 16:48. Показов 6813. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такая задачка:
есть файл A.txt, в котором есть разные строки; нужно скопировать содержимое файла A.txt в файл B.txt, но что бы скопированные строки были в отсортированном порядке по длине.
Сделал, только вот сортировку не знаю как сделать.

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

Спасибо за помощь!
Если нужен листинг, могу выслать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.09.2013, 16:48
Ответы с готовыми решениями:

Скопировать содержимое одного файла в другой
Привет. Мне нужно содержимое одного файла как то быстро скопировать в другой. Что подскажете? Спасибо )

Скопировать содержимое одного файла в другой
Прошу помочь мне разобраться в составлении данной программы. Условие:Скопировать содержимое одного файла в другой, исключая все слова,...

Скопировать содержимое одного файла в другой файл
Скопировать содержимое одного файла в другой файл. Для копирования использовать функции блочного ввода-вывода. Файл необходимо открыть в...

13
Восстанавливающий знания
 Аватар для solyar
304 / 294 / 13
Регистрация: 01.11.2010
Сообщений: 1,234
04.09.2013, 17:11
Цитата Сообщение от sirj77 Посмотреть сообщение
Если нужен листинг, могу выслать
Лучше выложи, проще будет понять, что уже сделано
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
04.09.2013, 17:15
1. Сделайте обертку для String
2. Реализуйте Comparable как вам надо
3. Создайте массив
4. Отсортируйте

По-моему так.
0
0 / 0 / 0
Регистрация: 04.09.2013
Сообщений: 5
04.09.2013, 17:15  [ТС]
Кликните здесь для просмотра всего текста
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
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");
 
        } 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
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
04.09.2013, 17:43
разберетесь?
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 
public class MainClazz {
 
    public static void main(String[] args) {
        if (args.length != 3) {
            System.exit(0);
        }
 
        final String INPUT_FILE = args[0];
        final String OUTPUT_FILE = args[1];
        final String SORT_TYPE = args[2];
 
        List<String> list;
 
        list = readFromFile(INPUT_FILE);
        switch (SORT_TYPE) {
        case "abc":
            sortListABC(list);
            break;
        case "cba":
            sortListCBA(list);
            break;
        }
 
        writeToFile(list, OUTPUT_FILE);
    }
 
    public static List<String> readFromFile(String fileName) {
        List<String> listWithStrings = new ArrayList<>();
        String str = null;
 
        try (BufferedReader reader = new BufferedReader(
                new FileReader(fileName))) {
            while ((str = reader.readLine()) != null) {
                listWithStrings.add(str);
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        return listWithStrings;
    }
 
    public static void sortListABC(List<String> list) {
        Collections.sort(list, new Comparator<String>() {
 
            @Override
            public int compare(String o1, String o2) {
                if (o1.length() > o2.length()) {
                    return 1;
                }
                if (o1.length() < o2.length()) {
                    return -1;
                }
                return 0;
            }
        });
    }
 
    public static void sortListCBA(List<String> list) {
        Collections.sort(list, new Comparator<String>() {
 
            @Override
            public int compare(String o1, String o2) {
                if (o1.length() < o2.length()) {
                    return 1;
                }
                if (o1.length() > o2.length()) {
                    return -1;
                }
                return 0;
            }
        });
    }
 
    public static void writeToFile(List<String> list, String fileName) {
        try (PrintWriter writer = new PrintWriter(new File(fileName))) {
            for (String str : list) {
                writer.write(str);
                writer.write("\n");
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
}
пример запуска:
java MainClazz INPUT.txt OUTPUT.txt abc
файлы понятно, порядок сортировки у меня или abc, или cba как параметр
0
0 / 0 / 0
Регистрация: 04.09.2013
Сообщений: 5
05.09.2013, 12:29  [ТС]
tankomaz, спасибо!

Не совсем понял зачем нужно использовать args..
Сами фалы нужно заносить так:
вместо list = readFromFile(INPUT_FILE); -> list = readFromFile("A.txt");
writeToFile(list, OUTPUT_FILE); -> writeToFile(list, "B.txt");
?

Или их нужно определить ранее здесь?:
final String INPUT_FILE = args[0];
final String OUTPUT_FILE = args[1];
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
05.09.2013, 12:31
Цитата Сообщение от sirj77 Посмотреть сообщение
Не совсем понял зачем нужно использовать args..
args - это массив текстовых строк, который передается в программу при старте. Если вы ничего не передаете - массив будет пустым. Можете захардкодить имена файлов прямо в программе.
0
0 / 0 / 0
Регистрация: 04.09.2013
Сообщений: 5
05.09.2013, 12:43  [ТС]
Цитата Сообщение от Gibby Посмотреть сообщение
Можете захардкодить имена файлов прямо в программе.
Как на примере захардкодить файлы в код программы?
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
05.09.2013, 12:45
Цитата Сообщение от sirj77 Посмотреть сообщение
Как на примере захардкодить файлы в код программы?
Вы ведь сами написали.
0
0 / 0 / 0
Регистрация: 04.09.2013
Сообщений: 5
05.09.2013, 12:52  [ТС]
Не выходит, если так, как я написал, то ставит ворнинг: значение переменной INPUT_FILE/OUTPUT_FILE не используется
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
05.09.2013, 13:15
Цитата Сообщение от sirj77 Посмотреть сообщение
Не выходит, если так, как я написал, то ставит ворнинг: значение переменной INPUT_FILE/OUTPUT_FILE не используется
Удалите объявление переменной INPUT_FILE/OUTPUT_FILE

Добавлено через 21 минуту
Цитата Сообщение от sirj77 Посмотреть сообщение
то ставит ворнинг: значение переменной INPUT_FILE/OUTPUT_FILE не используется
А зачем вы объявляете переменные INPUT_FILE/OUTPUT_FILE, если потом их не используете?
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
05.09.2013, 13:17
Цитата Сообщение от sirj77 Посмотреть сообщение

Не совсем понял зачем нужно использовать args..
;
так вы же сами просили
пример запуска java SortFile aa.txt bb.txt asc
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12841 / 7590 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
05.09.2013, 16:22
Цитата Сообщение от tankomaz Посмотреть сообщение
так вы же сами просили
Не, это для ботаников, на пятёрку, а на трояк и так сойдёт
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
package easybudda.examples.sortstringsbylength;
 
import java.io.*;
import java.util.*;
 
public class SortFile {
    private static final String INPUT_FILE = "input.txt";
    private static final String OUTPUT_FILE = "output.txt";
    public static void main(String[] args) {
        Set<String> set = new TreeSet<>(new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                int diff = a.length() - b.length();
                if ( diff == 0 )
                    diff = a.compareTo(b);
                
                return ( diff == 0 ) ? 1 : diff;
            }
        });
        
        try ( Scanner scanner = new Scanner(new File(INPUT_FILE)) ) {
            while ( scanner.hasNext() )
                set.add(scanner.nextLine());
        }
        catch ( FileNotFoundException fnfe ) {
            System.err.println("Can't open input file!");
            return;
        }
        catch ( IllegalStateException ise ) {
            System.err.println("Can't read from input file!");
            return;
        }
        
        if ( set.isEmpty() ) {
            System.err.println("Input file is empty!");
            return;
        }
        
        try ( PrintStream ps = new PrintStream(OUTPUT_FILE) ) {
            for ( String str : set )
                ps.println(str);
        }
        catch ( IOException ioe ) {
            System.err.println("Can't write to output file!");
            return;
        }
        
        System.err.println("Done.");
    }
 
}
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
05.09.2013, 16:38
easybudda, ага?
Миниатюры
Скопировать содержимое одного файла в другой, но что бы строки были отсортированы по длине  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2013, 16:38
Помогаю со студенческими работами здесь

Скопировать содержимое одного файла в другой файл
есть рабочий код нужно только доработать , помогите пожалуйста вот задание :Скопировать содержимое одного файла в другой файл. Для...

Как скопировать содержимое одного .config файла в другой?
У меня есть два .config файла. Я хотел бы скопировать содержимое одного файла в другой. Как это сделать? Пытался использовать это:...

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

Скопировать все строки из одного файла в другой
Подскажите, как скопировать строки из одного файла в другой файл, в которых в столбце С значение ячейки равно 5

Скопировать все строки из одного файла в другой
Нужно скопировать все строки из одного файла в другой, но после выполнения программы во втором файле в каждой строке только одно слово, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. ) Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru