С Новым годом! Форум программистов, компьютерный форум, киберфорум
AlexProgramm
Войти
Регистрация
Восстановить пароль
Карта форума Блоги Сообщество Поиск Заказать работу  
Рейтинг: 1.00. Голосов: 1.

Изученный материал по Java. Потоки данных.

Запись от AlexProgramm размещена 30.12.2022 в 15:19

Закончил тему:

10. Потоки данных.
  • Байтовые потоки
  • Символьные потоки
  • Буферизованные потоки
  • Форматированный ввод-вывод
  • Ввод-вывод двоичных данных

Задачи:
1.
Разработайте программу, осуществляющую побайтное копирование файла.
Название исходного файла и название файла-копии вводится пользователем с клавиатуры.
При копировании используются байтовые потоки FileOutputStream и FileInputStream
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
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
 
 
public class DZ101 {
 
    public static void main(String[] args) {
        String f, f1, f2;
        Scanner s = new Scanner(System.in);
        System.out.print("Введите имя файла: ");
        f = s.nextLine();
        f1 = "E:\\_Специалист\\Javatxt\\" + f; 
        System.out.print("Введите имя файла копии: ");
        f = s.nextLine();
        f2 = "E:\\_Специалист\\Javatxt\\" + f;
        
        try (FileInputStream fin = new FileInputStream(f1);
                FileOutputStream fout = new FileOutputStream(f2);) {
            int b;
            do {
                b = fin.read();
                if (b != -1) {
                    System.out.print(b + " ");
                    fout.write(b);
                }
            } while (b != -1);
        }
        catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
        catch (IOException e) {
            System.out.println(e.getMessage());
        }
        
    }
}
2.
На базе класса com.spec.Vector создайте новый класс com.spec.SuperVector. Класс должен содержать следующие методы:
• void saveToFile(StringfileName) throwsIOException – сохраняет координаты вектора в заданный двоичный файл (с использованием потока DataOutputStream)
• void loadFromFile(StringfileName) throwsIOException– загружает координаты для текущего вектора из заданного файла (с использованием потока DataInputStream)
• static Vector createFromFile(StringfileName)throwsIOException – создает новый вектор и устанавливает для него координаты, загруженные из файла
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
public class DZ102 {
 
    public static void main(String[] args) {
        Vector vec = new Vector();
        System.out.println("Проверочка координат конструктора по умолчанию");
        vec.print(vec);
        Vector vec2 = new Vector(5, 5);
        
        System.out.println("Координаты vec2 X = " + vec2.getCoordX() + " Y = " + vec2.getCoordY());
        Vector vec3;
        vec3 = vec.sum(vec2);
        System.out.println("Координаты суммы векторов");
        vec.print(vec3);
        vec3 = vec.sub(vec2);
        System.out.println("Координаты разности векторов");
        vec.print(vec3);
        System.out.println("Скалярное произвед векторов = " + vec.multi(vec2));
        try {
            System.out.println("Перпендикулярны ли векторы - " + vec.isOrtho(vec));
            System.out.println("Сообщение после обработки ошибки");
        }
        catch (NullVectorException e) {
            System.out.println("Возникла ошибка");
            System.out.println("Длина вектора = " + e.getLength());
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        System.out.println("Длина вектора = " + vec.length());
        
        System.out.println("Новый вектор Super vec3");
        SuperVector svec3 = new SuperVector(10, 10);
        svec3.saveToFile();
        svec3.loadFromFile();
        System.out.println("Координаты нового Super vec3");
        svec3.print(svec3);
        
        System.out.println("Новый вектор vec4");
        Vector vec4 = SuperVector.createFromFile("testdata.txt");
        System.out.println("Координаты vec4 X = " + vec4.getCoordX() + " Y = " + vec4.getCoordY());
    }
    
}
 
public class NullVectorException extends Exception {
    private final double length;
    public NullVectorException (double length) {
        super("Вектор нулевой длины!");
        this.length = length;
    }
    public double getLength() {
        return length;
    }
}
 
public class Point {
    
    private int x, y;
    
    public Point() {
        setCoord(1, 2);
    }
    public Point (int x, int y){
        this.x = x;
        this.y = y;
    }
    
    public void setCoord(int x, int y){
        this.x = x;
        this.y = y;
    }
    public int getCoordX(){
        //System.out.println("x = " + x + " y = " + y);
        return x;
    }
    public int getCoordY(){
        //System.out.println("x = " + x + " y = " + y);
        return y;
    }
}
 
public class SuperVector extends Vector {
    public SuperVector() {
        super();
    }
    public SuperVector(int x, int y) {
        super(x, y);
    }
    public void saveToFile() {
        String filename = "E:\\_Специалист\\Javatxt\\testdata.txt";
        
        try {
            FileOutputStream fout = new FileOutputStream(filename);
            DataOutputStream dout = new DataOutputStream(fout);
            dout.writeInt(this.getCoordX());
            dout.writeInt(this.getCoordY());
            dout.close();
            fout.close();
        }
        catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
        catch (IOException e) {
            System.out.println(e.getMessage());
        }
        
    }
    public void loadFromFile() {
        String filename = "E:\\_Специалист\\Javatxt\\testdata.txt";
        
        try {
            FileInputStream fout = new FileInputStream(filename);
            DataInputStream din = new DataInputStream(fout);
            this.setCoord(din.readInt(), din.readInt());
            din.close();
            fout.close();
            }
        catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
        catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
    static Vector createFromFile(String filename) {
        int x = 0, y = 0;
        String thisfilename = "E:\\_Специалист\\Javatxt\\" + filename;
        try {
            FileInputStream fout = new FileInputStream(thisfilename);
            DataInputStream din = new DataInputStream(fout);
            x = din.readInt();
            y = din.readInt();
            din.close();
            fout.close();
            }
        catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
        catch (IOException e) {
            System.out.println(e.getMessage());
        }
        Vector vec4 = new Vector(x, y);
        return vec4;
    }
    
}
 
public class Vector extends Point {
    public Vector(){
        //super();
    }
    public Vector(int nx, int ny){
        super(nx, ny);
    }
    public Vector sum(Vector v){
        int xsum, ysum;
        Vector vsum = new Vector();
        xsum = getCoordX() + v.getCoordX();
        ysum = getCoordY() + v.getCoordY();
        vsum.setCoord(xsum, ysum);
        return vsum;
    }
    public Vector sub(Vector v){
        int xsub, ysub;
        Vector vsub = new Vector();
        xsub = getCoordX() - v.getCoordX();
        ysub = getCoordY() - v.getCoordY();
        vsub.setCoord(xsub, ysub);
        return vsub;
    }
    public int multi(Vector v){
        int scal;
        scal = this.getCoordX() * v.getCoordX() + this.getCoordY() * v.getCoordY();
        return scal;
    }
    public boolean isOrtho (Vector v) throws NullVectorException{
        int scal;
        scal = this.getCoordX() * v.getCoordX() + this.getCoordY() * v.getCoordY();
        
        if (length() == 0 || v.length() == 0)
            throw new NullVectorException(length());
        
        if (scal == 0)
            return true;
        else
            return false;
    }
    public double length() {
        return Math.sqrt(Math.pow(this.getCoordX(), 2) + Math.pow(this.getCoordY(), 2));
    }
    public void print(Vector v) {
        System.out.println("Coord X = " + v.getCoordX() + " Coord Y = " + v.getCoordY());
    }
    
}
3.
В классе com.spec.Arrays2D реализуйте новые методы по загрузке из файла и сохранению в файл двумерного массива:
• static void saveToFile(int[][]arr, StringfileName) – сохраняет двумерный массив в двоичный файл (см. слайд 39)
• static int[][] createFromFile(StringfileName) – создает новый массив на основе данных двоичного файла (см. слайд 40)
• static void saveToTextFile(int[][]arr, StringfileName) – сохраняет массив в текстовый файл с использованием PrintWriter
• static int[][] createFromTextFile (StringfileName) – создает новый массив на основе данных текстового файла (с использованием Scanner или BufferedReader)
Проверьте работу методов на нескольких массивах разного размера.
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
package com.spec;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Random;
import java.util.Scanner;
 
public class Arrays2D {
    private static int[][] arr;
    
    private Arrays2D(){
        create2DArray();
    }
    public static int[][] create2DArray(){
        arr = new int[10][10];
        return arr;
    }
    public static void max(){
        int max = 0;
        for (int[] line : arr)
            for (int item : line)
                if (item > max)
                    max = item;
        System.out.println("max = " + max);
    }
    public static void min(){
        int min = arr[0][0];
        for (int[] line : arr)
            for (int item : line)
                if (item < min)
                    min = item;
        System.out.println("min = " + min);
    }
    public static boolean find(int el){
        for (int[] line : arr)
            for (int item : line)
                if (item == el)
                    return true;
        return false;
    }
    public static void fill(){
        Random r = new Random();
        for (int i=0; i<10; i++)
            for (int j=0; j<10; j++)
                arr[i][j] = r.nextInt(100);
    }
    public static void print(){
        for (int[] line : arr){
            for (int item : line)
                System.out.printf("%2d ", item);
            System.out.println();
        }
    }
    public static void saveToFile(int[][] arr, String fileName) {
        try (FileOutputStream f = new FileOutputStream(fileName);
                DataOutputStream dout = new DataOutputStream(f);) {
            dout.writeInt(arr.length);
            dout.writeInt(arr[0].length);
            for (int[] line : arr)
                for (int item : line)
                    dout.writeInt(item);
        }
        catch (IOException e) {
            e.getMessage();
        }
    }
    public static int[][] createFromFile(String fileName) {
        int n, m, i, j;
        try (FileInputStream f = new FileInputStream(fileName);
                DataInputStream din = new DataInputStream(f);) {
            
            n = din.readInt();
            m = din.readInt();
            arr = new int[n][m];
            
            
            for (i = 0; i < n; i++)
                for (j = 0; j < m; j++)
                    arr[i][j] = din.readInt();
        }
        catch (IOException e) {
            e.getMessage();
        }
        return arr;
    }
    public static void saveToTextFile(int[][] arr, String fileName) {
        try (
                PrintWriter pr = new PrintWriter(fileName);) {
            pr.write(arr.length);
            pr.write(arr[0].length);
            for (int[] line : arr)
                for (int item : line)
                    pr.write(item);
        }
        catch (IOException e) {
            e.getMessage();
        }
    }
    public static int[][] createFromTextFile(String fileName) {
        int n, m, i, j;
        
        
        try (FileInputStream fin = new FileInputStream(fileName);
                InputStreamReader isr = new InputStreamReader(fin);
                BufferedReader br = new BufferedReader(isr);) {
            
            n = br.read();
            m = br.read();
            arr = new int[n][m];
                        
            for (i = 0; i < n; i++)
                for (j = 0; j < m; j++)
                    arr[i][j] = br.read();
        }
        catch (IOException e) {
             e.getMessage();
        }
        return arr;
    }
    public static void saveToNewTextFile(int[][] arr, String fileName) {
        try (FileOutputStream fin = new FileOutputStream(fileName);
                OutputStreamWriter out = new OutputStreamWriter(fin);) {
            out.write(arr.length);
            out.write(arr[0].length);
            for (int[] line : arr)
                for (int item : line)
                    out.write(item);
        }
        catch (IOException e) {
            e.getMessage();
        }
    }
    public static void saveToNewTextFileFileWriter(int[][] arr, String fileName) {
        try (FileWriter fr = new FileWriter(fileName); ) {
            fr.write(arr.length);
            fr.write(arr[0].length);
            for (int[] line : arr)
                for (int item : line)
                    fr.write(item);
        }
        catch (IOException e) {
            e.getMessage();
        }
    }
}
 
public class DZ103 {
 
    public static void main(String[] args) {
        int[][] arr;
        int[][] arr2;
        arr = Arrays2D.create2DArray();
        Arrays2D.fill();
        Arrays2D.print();
        System.out.println(Arrays2D.find(10));
        Arrays2D.max();
        Arrays2D.min();
        
        Arrays2D.saveToFile(arr, "E:\\_Специалист\\Javatxt\\arr2d.txt");
        //Arrays2D.print();
        Arrays2D.fill();
        System.out.println("Заново заполненный массив");
        Arrays2D.print();
        System.out.println("Массив, загруженный из файла");
        arr = null;
        arr = Arrays2D.createFromFile("E:\\_Специалист\\Javatxt\\arr2d.txt");
        Arrays2D.print();
        Arrays2D.fill();
        Arrays2D.saveToTextFile(arr, "E:\\_Специалист\\Javatxt\\arr2dtxt.txt");
        Arrays2D.fill();
        System.out.println("Массив, загруженный из текстового файла");
        arr = Arrays2D.createFromTextFile("E:\\_Специалист\\Javatxt\\arr2dtxt.txt");
        Arrays2D.print();
        Arrays2D.saveToNewTextFile(arr, "E:\\_Специалист\\Javatxt\\arr2dnewtxt.txt");
        Arrays2D.saveToNewTextFileFileWriter(arr, "E:\\_Специалист\\Javatxt\\arr2dnewtxt.txt");
    }
}
Размещено в Без категории
Показов 1218 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru