Wczytanie danych to tablicy z pliku tekstowego

0

Cześc, mam zrobiony serwer w Java Spring, w którym znajdują się kawały w formie tablicy. Kawały są pobierane z tej tablicy i wyświetlają się losowo po wpisaniu w przeglądarkę adresu localhost. Chciałbym żeby te kawały mój przechowywać w pliku txt, w formie prostej bazy danych. Jak to zrobić?

package hello;

import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class GreetingController {

    @RequestMapping(value = "/greeting")

        public String elo() //String bo ta funkcja zwraca string jak ktos da request
    {
        //tablica z kawalami
        String[] tablica = new String[12];
        tablica[0] = "Rambo do Chucka Norrisa ile zrobisz pompek?\n" +
                "Na to Chuck WSZYSTKIE";
        tablica[1] = "Jak miał na nazwisko Św. Józef ?\n" +
                "Pośpiech, bo jest napisane \\'Maria poszła z pośpiechem...";
        tablica[2] = "W co najlepiej zainwestować pieniądze? - w alkohol, bo zawsze ma 40%";
        tablica[3] = "jaki jest szczyt gupoty ?\n" +
                "przestraszyć strusia na betonie !!!";
        tablica[4] = "Czy każdy lekarz może się ożenić ze swoją pacjentką?? Nie!! Weterynarz nie może!!";
        tablica[5] = "- Jak nazwać policjanta wynurzającego się z mgły?\n" +
                "- Dog in the fog.";
        tablica[6] = "Co się stanie jak walec drogowy przejdzie człowieka?\n" +
                "-Konwersja obrazu z 3D na 2D";

        //funkcja losowa
        Random r = new Random();

        String newLine = System.getProperty("line.separator");

       //funkcja return wyswietla losowy kawal na ekranie gdy ktos zrobi request
            return "Kawał na dziś: \n"  +  tablica[r.nextInt(7)];

    }

}

2

Zostaw Springa w cholerę, jeszcze nie ten czas dla Ciebie.
Poucz się Javy na konsoli. Braku elementarza nie przeskoczysz.

A na wklejaniu z netu niewiele się nauczysz.

ps. wątek o praktycznie tym samym tytule był tu niedawno

1

Mam na to dwa dni, więc nie ma tu mowy o przekształceniu projektu. Liczę po prostu na pomoc i na pewno więcej się nauczę jak dostanę i poznam gotową funkcję niż będę tak błądził, bo więcej nerwów niż nauki.

1
majsterJelenia napisał(a):

Mam na to dwa dni, więc nie ma tu mowy o przekształceniu projektu. Liczę po prostu na pomoc i na pewno więcej się nauczę jak dostanę i poznam gotową funkcję niż będę tak błądził, bo więcej nerwów niż nauki.

Szkółka? Rekrutacja?
Jaskim cudem wylądowałeś na etapie kopiowania kodu Springa?

Uwaga, podaję odpowiedź. Ale skup się, bo to bardzo trudne
https://www.google.com/search?client=firefox-b-d&q=Wczytanie+danych+to+tablicy+z+pliku+tekstowego

1
majsterJelenia napisał(a):

... więc nie ma tu mowy o przekształceniu projektu. ...

A kto mówi o przekształceniu. Załóż drugi testowy, na króym poćwiczysz technikę wczytywanie z pliku. Kosztuje to 15 minut

majsterJelenia napisał(a):

... i poznam gotową funkcję niż będę tak błądził, bo więcej nerwów niż nauki.

Nie ma takiej funkcji

1

Za odpowiedni hajs mogę się pofatygować i zrobić za Ciebie.

0
MrMadMatt napisał(a):

Za odpowiedni hajs mogę się pofatygować i zrobić za Ciebie.

O jakiej kwocie mowa? Funkcja dodana tylko do tego pliku. Elementy z tablicy są losowane i wyświetlane pojedynczo z każdym requestem po zalogowaniu do localhosta lub w dedykowanej aplikacji android.

1
AnyKtokolwiek napisał(a):
majsterJelenia napisał(a):

... więc nie ma tu mowy o przekształceniu projektu. ...

A kto mówi o przekształceniu. Załóż drugi testowy, na króym poćwiczysz technikę wczytywanie z pliku. Kosztuje to 15 minut

majsterJelenia napisał(a):

... i poznam gotową funkcję niż będę tak błądził, bo więcej nerwów niż nauki.

Nie ma takiej funkcji

Pochwalę się. Udało się. Może to dobry sposób, może nie, ale działa.

package hello;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class GreetingController {

    @RequestMapping(value = "/greeting")

        public String elo() //String bo ta funkcja zwraca string jak ktos da request
    {

        List<String> lines = null;
        try {
            lines = Files.readAllLines(
                    Paths.get("C:\\Users\\phill\\Desktop\\tablica.txt"),
                    StandardCharsets.UTF_8
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
        String[] array = lines.toArray(new String[0]);


        //funkcja losowa
        Random r = new Random();

        String newLine = System.getProperty("line.separator");

       //funkcja return wyswietla losowy kawal na ekranie gdy ktos zrobi request
            return "Kawał na dziś: \n"  +  array[r.nextInt(7)];

    }

}

Plik przechowywany na pulpicie, elementy to sam tekst w osobnych liniach.

5

Mała uwaga. Masz zwodniczą obsługę exception.

 List<String> lines = null;
        try {
            lines = Files.readAllLines(
                    Paths.get("C:\\Users\\phill\\Desktop\\tablica.txt"),
                    StandardCharsets.UTF_8
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
        String[] array = lines.toArray(new String[0]);

Jak coś walnie w try catch, to **lines **będzie równe null, a wtedy poleci NullPointerException (w ostatniej z cytowanych linii).
Najlepiej by było nie łapac tego IOException, a jak już trzeba to lepiej wpisać

catch (IOException e) {
           throw new RuntimeException(e);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1