CodeGym/Java Blog/рдпрд╛рджреГрдЪреНрдЫрд┐рдХ/рдЬрд╛рд╡рд╛ рдлрд╛рдЗрд▓реНрд╕, рдкрде
John Squirrels
рдкрд╛рддрд│реА 41
San Francisco

рдЬрд╛рд╡рд╛ рдлрд╛рдЗрд▓реНрд╕, рдкрде

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдпрд╛ рдЧреНрд░реБрдкрдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ
рд╕рджрд╕реНрдп
рд╣рд╛рдп! рдЖрдЬ рдЖрдкрдг рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдбрд┐рд░реЗрдХреНрдЯрд░реАрд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓реВ. рдлрд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рдХрд╢реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛рдпрдЪреА рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ: рдЖрдореНрд╣реА рдпрд╛рд╕рд╛рдареА рдмрд░реЗрдЪ рдзрдбреЗ рд╕рдорд░реНрдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд :) рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдпрд╛ рд╣реЗрддреВрдВрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рдХрд╛рд╣реА рд╡рд░реНрдЧ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реЛрдкреЗ рд╡рд╛рдЯрддреЗ. рдЖрдЬрдЪреНрдпрд╛ рдзрдбреНрдпрд╛рдд, рдЖрдореНрд╣реА рд╡рд┐рд╢реЗрд╖рдд: рдлрд╛рдЗрд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рдмрджреНрджрд▓ рдмреЛрд▓реВ: рддрдпрд╛рд░ рдХрд░рдгреЗ, рдирд╛рд╡ рдмрджрд▓рдгреЗ рдЗ. рдЬрд╛рд╡рд╛ 7 рдкреВрд░реНрд╡реА, рдЕрд╢рд╛ рд╕рд░реНрд╡ рдСрдкрд░реЗрд╢рдиреНрд╕ рдлрд╛рдЗрд▓ рдХреНрд▓рд╛рд╕ рд╡рд╛рдкрд░реВрди рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдд рд╣реЛрддреНрдпрд╛. рдЖрдкрдг рдпрд╛рдмрджреНрджрд▓ рдпреЗрдереЗ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ . рдкрдг Java 7 рдордзреНрдпреЗ, рднрд╛рд╖реЗрдЪреНрдпрд╛ рдирд┐рд░реНрдорд╛рддреНрдпрд╛рдВрдиреА рдЖрдореНрд╣реА рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдбрд┐рд░реЗрдХреНрдЯрд░реАрд╕рд╣ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЛ рддреЗ рдмрджрд▓рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рд╣реЗ рдШрдбрд▓реЗ рдХрд╛рд░рдг рдлрд╛рдЗрд▓ рд╡рд░реНрдЧрд╛рдд рдЕрдиреЗрдХ рдХрдорддрд░рддрд╛ рд╣реЛрддреНрдпрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рдд рдХреЙрдкреА() рдкрджреНрдзрдд рдирд╡реНрд╣рддреА , рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рдлрд╛рдЗрд▓ рдПрдХрд╛ рдард┐рдХрд╛рдгрд╛рд╣реВрди рджреБрд╕рд▒реНрдпрд╛ рд╕реНрдерд╛рдирд╛рд╡рд░ рдХреЙрдкреА рдХрд░реВ рджреЗрддреЗ (рдЙрд╢рд┐рд░ рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖рдорддрд╛). рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рджрдлрд╛рдЗрд▓ рдХреНрд▓рд╛рд╕рдордзреНрдпреЗ рдмреБрд▓рд┐рдпрди рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рдкрд░рдд рдХрд░рдгрд╛рд▒реНрдпрд╛ рдХрд╛рд╣реА рдкрджреНрдзрддреА рд╣реЛрддреНрдпрд╛ . рдЬреЗрд╡реНрд╣рд╛ рдПрдЦрд╛рджреА рддреНрд░реБрдЯреА рдЕрд╕рддреЗ, рддреЗрд╡реНрд╣рд╛ рдЕрд╢реА рдкрджреНрдзрдд рдЪреБрдХреАрдЪреА рдкрд░рдд рдпреЗрддреЗ. рддреЛ рдЕрдкрд╡рд╛рдж рд╕реЛрдбрдд рдирд╛рд╣реА, рдЬреНрдпрд╛рдореБрд│реЗ рддреНрд░реБрдЯреА рдУрд│рдЦрдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХрд╛рд░рдгрд╛рдВрдЪреЗ рдирд┐рджрд╛рди рдХрд░рдгреЗ рдЦреВрдк рдХрдареАрдг рд╣реЛрддреЗ. рдПрдХрд▓ рдлрд╛рдЗрд▓ рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рдЬрд╛рдЧреА , 3 рд╡рд░реНрдЧ рджрд┐рд╕реВ рд▓рд╛рдЧрд▓реЗ: рдкрде , рдкрде рдЖрдгрд┐ рдлрд╛рдЗрд▓реНрд╕ . рдмрд░рдВ, рддрдВрддреЛрддрдВрдд рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рддрд░, рдкрде рд╣рд╛ рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ, рд╡рд░реНрдЧ рдирд╛рд╣реА. рддреЗ рдПрдХрдореЗрдХрд╛рдВрдкрд╛рд╕реВрди рдХрд╕реЗ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ рддреЗ рд╢реЛрдзреВрдпрд╛. рдЪрд▓рд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреНрдпрд╛рдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВрдпрд╛: рдкрде .

рдорд╛рд░реНрдЧ

рдкрд╛рдереНрд╕ рд╣рд╛ рдПрдХрд▓ рд╕реНрдЯреЕрдЯрд┐рдХ рдкрджреНрдзрддреАрд╕рд╣ рдЕрддрд┐рд╢рдп рд╕реЛрдкрд╛ рд╡рд░реНрдЧ рдЖрд╣реЗ: get() . рд╣реЗ рдХреЗрд╡рд│ рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд┐рдВрд╡рд╛ URI рдордзреВрди рдкрд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗ рд╣реЛрддреЗ . рдпрд╛рдд рдЗрддрд░ рдХреЛрдгрддреАрд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╛рд╣реА. рдХрд╛рдорд╛рд╡рд░ рддреНрдпрд╛рдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рдЖрд╣реЗ:
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {

   public static void main(String[] args) {

       Path testFilePath = Paths.get("C:\\Users\\Username\\Desktop\\testFile.txt");
   }
}
рд╕рд░реНрд╡рд╛рдд рдЬрдЯрд┐рд▓ рд╡рд░реНрдЧ рдирд╛рд╣реА, рдмрд░реЛрдмрд░? :) рдмрд░рдВ, рдЖрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рдкрде рдкреНрд░рдХрд╛рд░ рджреЗрдЦреАрд▓ рдорд┐рд│рд╛рд▓рд╛ рдЖрд╣реЗ. рдорд╛рд░реНрдЧ рдХрд╛рдп рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ рддреЗ рд╢реЛрдзреВрдпрд╛ :)

рдорд╛рд░реНрдЧ

рдкрд╛рде , рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд, рдлрд╛рдИрд▓ рдХреНрд▓рд╛рд╕рдЪрд╛ рдкреБрдиреНрд╣рд╛ рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓рд╛ рдЕреЕрдирд╛рд▓реЙрдЧ рдЖрд╣реЗ. рдлрд╛рдИрд▓ рдкреЗрдХреНрд╖рд╛ рдХрд╛рдо рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ . рдкреНрд░рдердо , рдЕрдиреЗрдХ рдЙрдкрдпреБрдХреНрддрддрд╛ (рд╕реНрдерд┐рд░) рдкрджреНрдзрддреА рдХрд╛рдврд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрдгрд┐ рдлрд╛рдИрд▓реНрд╕ рд╡рд░реНрдЧрд╛рдд рд╣рд▓рд╡рдгреНрдпрд╛рдд рдЖрд▓реНрдпрд╛. рджреБрд╕рд░реЗ , рдкрд╛рде рдЗрдВрдЯрд░рдлреЗрд╕рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдВрдЪреНрдпрд╛ рдкрд░рддрд╛рд╡реНрдпрд╛рдЪреНрдпрд╛ рдореВрд▓реНрдпрд╛рдВрд╡рд░ рдСрд░реНрдбрд░ рд▓рд╛рджрдгреНрдпрд╛рдд рдЖрд▓реА . рдлрд╛рдЗрд▓ рд╡рд░реНрдЧрд╛рдд , рдкрджреНрдзрддреАрдВрдиреА рдПрдХрддрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ , рдХрд┐рдВрд╡рд╛ рдмреБрд▓рд┐рдпрди , рдХрд┐рдВрд╡рд╛ рдлрд╛рдЗрд▓ рдкрд░рдд рдХреЗрд▓реА . рддреЗ рд╢реЛрдзрдгреЗ рд╕реЛрдкреЗ рдирд╡реНрд╣рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдПрдХ getParent() рдкрджреНрдзрдд рд╣реЛрддреА рдЬреА рд╡рд░реНрддрдорд╛рди рдлрд╛рдИрд▓рдЪреНрдпрд╛ рдореВрд│ рдорд╛рд░реНрдЧрд╛рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгрд╛рд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░рдд рдХрд░рддреЗ. рдкрдг рддрд┐рдереЗрд╣реА рдПgetParentFile() рдкрджреНрдзрдд, рдЬреНрдпрд╛рдиреЗ рд╕рдорд╛рди рдЧреЛрд╖реНрдЯ рдкрд░рдд рдХреЗрд▓реА рдкрд░рдВрддреБ рдлрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рд░реВрдкрд╛рдд! рд╣реЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдкрд╛рде рдЗрдВрдЯрд░рдлреЗрд╕рдордзреНрдпреЗ, getParent() рдкрджреНрдзрдд рдЖрдгрд┐ рдлрд╛рдЗрд▓реНрд╕рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЗрддрд░ рдкрджреНрдзрддреА рдлрдХреНрдд рдкрд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рдд рдХрд░рддрд╛рдд. рдкрд░реНрдпрд╛рдпрд╛рдВрдЪрд╛ рдвреАрдЧ рдирд╛рд╣реА - рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реЛрдкреЗ рдЖрдгрд┐ рд╕реЛрдкреЗ рдЖрд╣реЗ. рдкрдердЪреНрдпрд╛ рдХрд╛рд╣реА рдЙрдкрдпреБрдХреНрдд рдкрджреНрдзрддреА рдХреЛрдгрддреНрдпрд╛ рдЖрд╣реЗрдд ? рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рдпрд╛рдЪреА рдЙрджрд╛рд╣рд░рдгреЗ рдпреЗрдереЗ рдЖрд╣реЗрдд:
  • getFileName() : рдкрдерд╛рд╡рд░реВрди рдлрд╛рдИрд▓рдЪреЗ рдирд╛рд╡ рдкрд░рдд рдХрд░рддреЗ;

  • getParent() : рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧрд╛рдЪреА "рдкрд╛рд▓рдХ" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░рдд рдХрд░рддреЗ (рджреБрд╕рд░реНтАНрдпрд╛ рд╢рдмреНрджрд╛рдд, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЯреНрд░реАрдордзреНрдпреЗ рд▓рдЧреЗрдЪ рд╡рд░ рд╕реНрдерд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛);

  • getRoot() : "рд░реВрдЯ" рдбрд┐рд░реЗрдХреНрдЯрд░реА, рдореНрд╣рдгрдЬреЗ рдбрд┐рд░реЗрдХреНрдЯрд░реА рдЯреНрд░реАрдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рдЕрд╕рд▓реЗрд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛;

  • startsWith() , endsWith() : рдкрд╛рде рдкрд╛рд╕ рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдкрд╛рдердиреЗ рд╕реБрд░реВ рд╣реЛрддреЛ/рд╕рдорд╛рдкреНрдд рд╣реЛрддреЛ рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛:

    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    public class Main {
    
       public static void main(String[] args) {
    
           Path testFilePath = Paths.get("C:\\Users\\Username\\Desktop\\testFile.txt");
    
           Path fileName = testFilePath.getFileName();
           System.out.println(fileName);
    
           Path parent = testFilePath.getParent();
           System.out.println(parent);
    
           Path root = testFilePath.getRoot();
           System.out.println(root);
    
           boolean endWithTxt = testFilePath.endsWith("Desktop\\testFile.txt");
           System.out.println(endWithTxt);
    
           boolean startsWithLalala = testFilePath.startsWith("lalalala");
           System.out.println(startsWithLalala);
       }
    }

    рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:

    testFile.txt
    C:\Users\Username\Desktop
    C:\
    true
    false

    endsWith() рдкрджреНрдзрдд рдХрд╢реА рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдХрдбреЗ рд▓рдХреНрд╖ рджреНрдпрд╛ . рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧ рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдорд╛рд░реНрдЧрд╛рдиреЗ рд╕рдВрдкрддреЛ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рддреЗ . рд╡рд┐рд╢реЗрд╖рдд:, рддреЗ рдорд╛рд░реНрдЧрд╛рдд рдЕрд╕рд▓реЗ рддрд░реА , рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧрдордзреНрдпреЗ рдирд╛рд╣реА .

    рдпрд╛ рджреЛрди рдХреЙрд▓рдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдорд╛рдВрдЪреА рддреБрд▓рдирд╛ рдХрд░рд╛:

    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    public class Main {
    
       public static void main(String[] args) {
    
           Path testFilePath = Paths.get("C:\\Users\\Username\\Desktop\\testFile.txt");
    
           System.out.println(testFilePath.endsWith("estFile.txt"));
           System.out.println(testFilePath.endsWith("Desktop\\testFile.txt"));
       }
    }

    рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:

    false
    true

    endsWith () рдкрджреНрдзрдд рдЕрд╕реНрд╕рд▓ рдорд╛рд░реНрдЧ рдкрд╛рд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдХреЗрд╡рд│ рд╡рд░реНрдгрд╛рдВрдЪрд╛ рд╕рдВрдЪ рдирд╛рд╣реА: рдЕрдиреНрдпрдерд╛, рдкрд░рд┐рдгрд╛рдо рдиреЗрд╣рдореАрдЪ рдЪреБрдХреАрдЪрд╛ рдЕрд╕реЗрд▓, рдЬрд░реА рд╡рд░реНрддрдорд╛рди рдорд╛рд░реНрдЧ рдЦрд░реЛрдЦрд░ рд╡рд░реНрдгрд╛рдВрдЪреНрдпрд╛ рддреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рд╕рдорд╛рдкреНрдд рдЭрд╛рд▓рд╛ рдЕрд╕реЗрд▓ (рдЬрд╕реЗ "estFile.txt) "рд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд).

    рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдкрд╛рдердордзреНрдпреЗ рдкрджреНрдзрддреАрдВрдЪрд╛ рдПрдХ рдЧрдЯ рдЖрд╣реЗ рдЬреЛ рдирд┐рд░рдкреЗрдХреНрд╖ (рдкреВрд░реНрдг) рдЖрдгрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдкрдерд╛рдВрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рд╕реЛрдкреЗ рдХрд░рддреЗ .

рдЪрд▓рд╛ рдпрд╛ рдкрджреНрдзрддреА рдкрд╛рд╣реВ:
  • рдЬрд░ рд╕рдзреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ рдирд┐рд░рдкреЗрдХреНрд╖ рдЕрд╕реЗрд▓ рддрд░ рдмреВрд▓рд┐рдпрди isAbsolute() рд╕рддреНрдп рдкрд░рдд рдХрд░реЗрд▓:

    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    public class Main {
    
       public static void main(String[] args) {
    
           Path testFilePath = Paths.get("C:\\Users\\Username\\Desktop\\testFile.txt");
    
           System.out.println(testFilePath.isAbsolute());
       }
    }

    рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:

    true
  • рдкрд╛рде рдиреЙрд░реНрдорд▓рд╛рдЗрдЬ() : рд╕рдзреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ "рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддреЛ", рддреНрдпрд╛рддреВрди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдШрдЯрдХ рдХрд╛рдвреВрди рдЯрд╛рдХрддреЛ. рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣рд┐рдд рдЕрд╕реЗрд▓ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ "" рд╣реА рдЪрд┐рдиреНрд╣реЗ рдЖрд╣реЗрдд. (рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛) рдЖрдгрд┐ ".." (рдкреЕрд░реЗрдВрдЯ рдбрд┐рд░реЗрдХреНрдЯрд░реА) рд╕рд╣рд╕рд╛ рдкрде рдирд┐рдпреБрдХреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, " ./Pictures/dog.jpg " рдореНрд╣рдгрдЬреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд "Pictures" рдлреЛрд▓реНрдбрд░ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ "dog.jpg" рдлрд╛рдЗрд▓ рдЖрд╣реЗ.

    рдЗрдХрдбреЗ рдкрд╣рд╛. рдЬрд░ "" рд╡рд╛рдкрд░реВрди рдкрде рдХрд┐рдВрд╡рд╛ ".." рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреНрдпреЗ рджрд┐рд╕рддреЗ, normalize() рдкрджреНрдзрдд рддреНрдпрд╛рдВрдирд╛ рдХрд╛рдвреВрди рдЯрд╛рдХреЗрд▓ рдЖрдгрд┐ рдПрдХ рдорд╛рд░реНрдЧ рддрдпрд╛рд░ рдХрд░реЗрд▓ рдЬреНрдпрд╛рдордзреНрдпреЗ рддреЗ рдирд╕рддреАрд▓:

    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    public class Main {
    
       public static void main(String[] args) {
    
    
           Path path5 = Paths.get("C:\\Users\\Java\\.\\examples");
    
           System.out.println(path5.normalize());
    
           Path path6 = Paths.get("C:\\Users\\Java\\..\\examples");
           System.out.println(path6.normalize());
       }
    }

    рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:

    C:\Users\Java\examples
    C:\Users\examples
  • рдкрд╛рде рд░рд┐рд▓реЗрдЯрд┐рд╡реНрд╣рд╛рдИрдЬ() : рдЪрд╛рд▓реВ рдЖрдгрд┐ рдкрд╛рд╕ рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдкрд╛рдердордзреАрд▓ рд╕рд╛рдкреЗрдХреНрд╖ рдорд╛рд░реНрдЧрд╛рдЪреА рдЧрдгрдирд╛ рдХрд░рддреЛ.

    рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    public class Main {
    
       public static void main(String[] args) {
    
           Path testFilePath1 = Paths.get("C:\\Users\\Users\\Users\\Users");
           Path testFilePath2 = Paths.get("C:\\Users\\Users\\Users\\Users\\Username\\Desktop\\testFile.txt");
    
           System.out.println(testFilePath1.relativize(testFilePath2));
       }
    }

    рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:

    Username\Desktop\testFile.txt

рдкрде рдкрджреНрдзрддреАрдВрдЪреА рд╕рдВрдкреВрд░реНрдг рдпрд╛рджреА рдмрд░реАрдЪ рдореЛрдареА рдЖрд╣реЗ. рддреБрдореНрд╣реА рддреЗ рд╕рд░реНрд╡ Oracle рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рдд рд╢реЛрдзреВ рд╢рдХрддрд╛ . рдЖрддрд╛ рдЖрдкрдг Files рд╡рд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВ .

рдлрд╛рдИрд▓реНрд╕

рдлрд╛рдЗрд▓реНрд╕ рд╣рд╛ рдПрдХ рдпреБрдЯрд┐рд▓рд┐рдЯреА рдХреНрд▓рд╛рд╕ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдлрд╛рдЗрд▓ рдХреНрд▓рд╛рд╕рдордзреВрди рдШреЗрддрд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреЕрдЯрд┐рдХ рдкрджреНрдзрддреА рдЕрд╕рддрд╛рдд. рдлрд╛рдЗрд▓реНрд╕рдЪреА рддреБрд▓рдирд╛ рдЕреЕрд░реЗ рдХрд┐рдВрд╡рд╛ рдХрд▓реЗрдХреНрд╢рдирд╢реА рдХреЗрд▓реА рдЬрд╛рддреЗ. рдлрд░рдХ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рддреЗ рдлрд╛рдЗрд▓реНрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдЕреЕрд░реЗ рдХрд┐рдВрд╡рд╛ рд╕рдВрдЧреНрд░рд╣ рдирд╛рд╣реА :) рддреЗ рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ. Files рдХреНрд▓рд╛рд╕рдЪреНрдпрд╛ рд╕реНрдЯреЕрдЯрд┐рдХ рдкрджреНрдзрддреАрдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди, рдЖрдореНрд╣реА рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдбрд┐рд░реЗрдХреНрдЯрд░реА рддрдпрд╛рд░ рдХрд░реВ, рд╣рдЯрд╡реВ рдЖрдгрд┐ рд╣рд▓рд╡реВ рд╢рдХрддреЛ. рд╣реА рдСрдкрд░реЗрд╢рдиреНрд╕ createFile() (рдбрд┐рд░реЗрдХреНрдЯрд░реАрдЬрд╕рд╛рдареА, createDirectory() ), move() , рдЖрдгрд┐ delete() рдкрджреНрдзрддреАрд╡рд╛рдкрд░реВрди рдХреЗрд▓реА рдЬрд╛рддрд╛рддрддреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;

public class Main {

   public static void main(String[] args) throws IOException {

       // Create a file
       Path testFile1 = Files.createFile(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt"));
       System.out.println("Was the file created successfully?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));

       // Create a directory
       Path testDirectory = Files.createDirectory(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory"));
       System.out.println("Was the directory created successfully?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory")));

       // Move the file from the desktop to the testDirectory directory. When you move a folder, you need to indicate its name in the folder!
       testFile1 = Files.move(testFile1, Paths.get("C:\\Users\\Username\\Desktop\\testDirectory\\testFile111.txt"), REPLACE_EXISTING);

       System.out.println("Did our file remain on the desktop?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));

       System.out.println("Has our file been moved to testDirectory?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory\\testFile111.txt")));

       // Delete a file
       Files.delete(testFile1);
       System.out.println("Does the file still exist?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory\\testFile111.txt")));
   }
}
рдпреЗрдереЗ рдЖрдкрдг рдкреНрд░рдердо рдбреЗрд╕реНрдХрдЯреЙрдкрд╡рд░ рдПрдХ рдлрд╛рдИрд▓ ( Files.createFile() рдкрджреНрдзрдд) рддрдпрд╛рд░ рдХрд░реВ. рдордЧ рдЖрдкрдг рддреНрдпрд╛рдЪ рдард┐рдХрд╛рдгреА рдПрдХ рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░рддреЛ ( Files.createDirectory() рдкрджреНрдзрдд). рддреНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣реА рдлрд╛рдЗрд▓ ( Files.move() рдкрджреНрдзрдд) рдбреЗрд╕реНрдХрдЯреЙрдкрд╡рд░реВрди рдпрд╛ рдирд╡реАрди рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рд╣рд▓рд╡рддреЛ рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдлрд╛рдЗрд▓ ( Files.delete() рдкрджреНрдзрдд) рд╣рдЯрд╡рддреЛ. рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:
Was the file created successfully?
true
Was the directory created successfully?
true
Did our file remain on the desktop?
false
Has our file been moved to testDirectory?
true
Does the file still exist?
false
рдЯреАрдк:рдЗрдВрдЯрд░рдлреЗрд╕рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдВрдкреНрд░рдорд╛рдгреЗ Path, рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рдЕрдиреЗрдХ рдкрджреНрдзрддреА рдСрдмреНрдЬреЗрдХреНрдЯ Filesрдкрд░рдд рдХрд░рддрд╛рддPath . рдХреНрд▓рд╛рд╕рдЪреНрдпрд╛ рдмрд╣реБрддреЗрдХ рдкрджреНрдзрддреА рд╡рд╕реНрддреВрдВрдирд╛ рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди FilesрджреЗрдЦреАрд▓ рдШреЗрддрд╛рдд . PathрдпреЗрдереЗ Paths.get()рдкрджреНрдзрдд рддреБрдордЪрд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕реВ рд╕рд╣рд╛рдпреНрдпрдХ рдЕрд╕реЗрд▓ - рддреНрдпрд╛рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рд╡рд╛рдкрд░ рдХрд░рд╛. рдЖрдгрдЦреА рдХрд╛рдп рдордиреЛрд░рдВрдЬрдХ рдЖрд╣реЗ Files? рдЬреБрдиреНрдпрд╛ Fileрд╡рд░реНрдЧрд╛рдд рдЦрд░реЛрдЦрд░ рдХрд╛рдп рдЙрдгреАрд╡ рд╣реЛрддреА рддреА рдореНрд╣рдгрдЬреЗ рдПрдХ copy()рдкрджреНрдзрдд! рдЖрдореНрд╣реА рдпрд╛ рдзрдбреНрдпрд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рд▓реЛ. рдЖрддрд╛ рднреЗрдЯрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ!
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;

public class Main {

   public static void main(String[] args) throws IOException {

       // Create a file
       Path testFile1 = Files.createFile(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt"));
       System.out.println("Was the file created successfully?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));

       // Create a directory
       Path testDirectory2 = Files.createDirectory(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2"));
       System.out.println("Was the directory created successfully?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2")));

       // Copy the file from the desktop to the testDirectory2 directory.
       testFile1 = Files.copy(testFile1, Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2\\testFile111.txt"), REPLACE_EXISTING);

       System.out.println("Did our file remain on the desktop?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testFile111.txt")));

       System.out.println("Was our file copied to testDirectory?");
       System.out.println(Files.exists(Paths.get("C:\\Users\\Username\\Desktop\\testDirectory2\\testFile111.txt")));
   }
}
рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:
Was the file created successfully?
true
Was the directory created successfully?
true
Did our file remain on the desktop?
true
Was our file copied to testDirectory?
true
рдЖрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣рд┐рддреА рдЖрд╣реЗ рдХреА рдлрд╛рдпрд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдореЕрдЯрд┐рдХрд▓реА рдХреЙрдкреА рдХрд╢рд╛ рдХрд░рд╛рдпрдЪреНрдпрд╛! :) рдЕрд░реНрдерд╛рдд, Filesрд╡рд░реНрдЧ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрд╛рдЗрд▓ рд╕реНрд╡рддрдГрдЪ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА рддрд░ рддреНрдпрд╛рддреАрд▓ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ рдХрд╛рд░реНрдп рджреЗрдЦреАрд▓ рдХрд░реВ рджреЗрддреЛ. рдпрд╛рдд write()рдлрд╛рдИрд▓рдордзреНрдпреЗ рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рдкрджреНрдзрдд рдЖрд╣реЗ рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡ 3 рдкрджреНрдзрддреА рдЖрд╣реЗрдд: read(), readAllBytes(), рдЖрдгрд┐ readAllLines() рдЖрдореНрд╣реА рд╢реЗрд╡рдЯрдЪреНрдпрд╛рд╡рд░ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд░рд╛рд╣реВ. рддреЗ рдХрд╛? рдХрд╛рд░рдг рддреНрдпрд╛рдд рдПрдХ рдЕрддрд┐рд╢рдп рдордиреЛрд░рдВрдЬрдХ рдкрд░рддрд╛рд╡рд╛ рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗ: List<String>! рдореНрд╣рдгрдЬреЗрдЪ, рддреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдлрд╛рдИрд▓рдордзреАрд▓ рд╕рд░реНрд╡ рдУрд│реАрдВрдЪреА рдпрд╛рджреА рджреЗрддреЗ. forрдЕрд░реНрдерд╛рдд, рд╣реЗ рдлрд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдпреАрд╕реНрдХрд░ рдмрдирд╡рддреЗ, рдХрд╛рд░рдг рд╕рдВрдкреВрд░реНрдг рдлрд╛рдЗрд▓, рдПрдХрд╛ рдУрд│реАрдиреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рд╛рдорд╛рдиреНрдп рд▓реВрдк рд╡рд╛рдкрд░реВрди рдХрдиреНрд╕реЛрд▓рд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

import static java.nio.charset.StandardCharsets.UTF_8;

public class Main {

   public static void main(String[] args) throws IOException {

       List<String> lines = Files.readAllLines(Paths.get("C:\\Users\\Username\\Desktop\\pushkin.txt"), UTF_8);

       for (String s: lines) {
           System.out.println(s);
       }
   }
}
рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:
I still recall the wondrous moment:
When you appeared before my sight,
As though a brief and fleeting omen,
Pure phantom in enchanting light.
рд╕реБрдкрд░ рд╕реЛрдпреАрд╕реНрдХрд░! :) рд╣реА рдХреНрд╖рдорддрд╛ Java 7 рдордзреНрдпреЗ рджрд┐рд╕реВрди рдЖрд▓реА. рд╕реНрдЯреНрд░реАрдо API Java 8 рдордзреНрдпреЗ рджрд┐рд╕рд▓реА. рд╣реЗ Java рдордзреНрдпреЗ рдлрдВрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрдЪреЗ рдХрд╛рд╣реА рдШрдЯрдХ рдЬреЛрдбрддреЗ. рд╕рдореГрджреНрдз рдлрд╛рдЗрд▓ рд╣рд╛рддрд╛рд│рдгреА рдХреНрд╖рдорддрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ. рдЕрд╢реА рдХрд▓реНрдкрдирд╛ рдХрд░рд╛ рдХреА рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЦрд╛рд▓реАрд▓ рдХрд╛рд░реНрдп рдЖрд╣реЗ: "рдЕрд╕" рд╢рдмреНрджрд╛рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрдгрд╛рд▒реНрдпрд╛ рд╕рд░реНрд╡ рдУрд│реА рд╢реЛрдзрд╛, рддреНрдпрд╛рдВрдирд╛ UPPERCASE рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рдХрдиреНрд╕реЛрд▓рд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рд╛. FilesJava 7 рдордзреНрдпреЗ рдХреНрд▓рд╛рд╕ рд╡рд╛рдкрд░реВрди рдЙрдкрд╛рдп рдХрд╕рд╛ рджрд┐рд╕реЗрд▓? рдпрд╛рд╕рд╛рд░рдЦреЗрдЪ рдХрд╛рд╣реАрд╕реЗ:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

import static java.nio.charset.StandardCharsets.UTF_8;

public class Main {

   public static void main(String[] args) throws IOException {

       List<String> lines = Files.readAllLines(Paths.get("C:\\Users\\Username\\Desktop\\pushkin.txt"), UTF_8);

       List<String> result = new ArrayList<>();

       for (String s: lines) {
           if (s.startsWith("As")) {
               String upper = s.toUpperCase();
               result.add(upper);
           }
       }

       for (String s: result) {
           System.out.println(s);
       }
   }
}
рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:
AS THOUGH A BRIEF AND FLEETING OMEN,
PURE PHANTOM IN ENCHANTING LIGHT.
рдорд┐рд╢рди рдкреВрд░реНрдг рдЭрд╛рд▓реЗ, рдкрдг рдПрд╡рдвреНрдпрд╛ рд╕рд╛рдзреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рд╕рд╛рдареА рдЖрдордЪрд╛ рдХреЛрдб рдереЛрдбрд╛... рд╢рдмреНрджрд╢: рдЭрд╛рд▓рд╛ рдЕрд╕реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд╛рдЯрдд рдирд╛рд╣реА рдХрд╛? Java 8 рдЪреНрдпрд╛ Stream API рд╡рд╛рдкрд░реВрди, рд╕реЛрд▓реНрдпреВрд╢рди рдЕрдзрд┐рдХ рдореЛрд╣рдХ рджрд┐рд╕рддреЗ:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {

   public static void main(String[] args) throws IOException {

       Stream<String> stream = Files.lines(Paths.get("C:\\Users\\Username\\Desktop\\pushkin.txt"));

       List<String> result  = stream
               .filter(line -> line.startsWith("As"))
               .map(String::toUpperCase)
               .collect(Collectors.toList());
       result.forEach(System.out::println);
   }
}
рдЖрдореНрд╣реА рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓рд╛, рдкрд░рдВрддреБ рдЦреВрдкрдЪ рдХрдореА рдХреЛрдбрд╕рд╣! рдЗрддрдХреЗрдЪ рдХрд╛рдп, рдЖрдореНрд╣реА "рд╡рд╛рдЪрдиреАрдпрддрд╛" рдЧрдорд╛рд╡рд▓реА рдЕрд╕реЗ рдХреЛрдгреА рдореНрд╣рдгреВ рд╢рдХрдд рдирд╛рд╣реА. рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдпрд╢реА рдкрд░рд┐рдЪрд┐рдд рдирд╕рддрд╛рдирд╛рд╣реА рддреБрдореНрд╣реА рд╣рд╛ рдХреЛрдб рдХрд╛рдп рдХрд░рддреЛ рдпрд╛рд╡рд░ рд╕рд╣рдЬ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВ рд╢рдХрддрд╛. рдереЛрдбрдХреНрдпрд╛рдд, рдкреНрд░рд╡рд╛рд╣ рд╣рд╛ рдШрдЯрдХрд╛рдВрдЪрд╛ рдПрдХ рдХреНрд░рдо рдЖрд╣реЗ, рдЬреНрдпрд╛рд╡рд░ рддреБрдореНрд╣реА рд╡рд┐рд╡рд┐рдз рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░реВ рд╢рдХрддрд╛. рдЖрдореНрд╣рд╛рд▓рд╛ рдкрджреНрдзрддреАрдордзреВрди рд╕реНрдЯреНрд░реАрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд│рддреЛ Files.lines()рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛рд╡рд░ 3 рдлрдВрдХреНрд╢рдиреНрд╕ рд▓рд╛рдЧреВ рдХрд░рд╛:
  1. рдЖрдореНрд╣реА filter()"As" рдиреЗ рд╕реБрд░реВ рд╣реЛрдгрд╛рд▒реНрдпрд╛ рдлрд╛рдИрд▓рдордзреВрди рдлрдХреНрдд рддреНрдпрд╛ рдУрд│реА рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рдкрджреНрдзрдд рд╡рд╛рдкрд░рддреЛ.

  2. рдЖрдореНрд╣реА рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдУрд│реАрдВрдордзреВрди рдлрд┐рд░рддреЛ map()рдЖрдгрд┐ рддреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ UPPERCASE рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЛ.

  3. collect()рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рд░реЗрд╖рд╛ a рдордзреНрдпреЗ рдПрдХрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдкрджреНрдзрдд рд╡рд╛рдкрд░рддреЛ List.

рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд│рддреЗ:
AS THOUGH A BRIEF AND FLEETING OMEN,
PURE PHANTOM IN ENCHANTING LIGHT.
рдЖрддрд╛ рдЖрдкрдг рдЖрдкрд▓реНрдпрд╛ рдмреНрд░реЗрдб рдЖрдгрд┐ рдмрдЯрд░рдХрдбреЗ рдкрд░рдд рдЬрд╛рдКрдпрд╛, рдореНрд╣рдгрдЬреЗ рдлрд╛рдЗрд▓реНрд╕ :) рдЖрдЬ рдЖрдкрдг рдЬреНрдпрд╛ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рдХреНрд╖рдорддреЗрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгрд╛рд░ рдЖрд╣реЛрдд рддреА рдореНрд╣рдгрдЬреЗ рдлрд╛рдИрд▓ рдЯреНрд░реАрдордзреВрди рдЪрд╛рд▓рдгреЗ . рдЖрдзреБрдирд┐рдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯреАрдордордзреНрдпреЗ, рдлрд╛рдИрд▓рдЪреА рд░рдЪрдирд╛ рдмрд╣реБрддреЗрдХ рд╡реЗрд│рд╛ рдЭрд╛рдбрд╛рд╕рд╛рд░рдЦреА рджрд┐рд╕рддреЗ: рддреНрдпрд╛рд▓рд╛ рдореВрд│ рдЕрд╕рддреЗ рдЖрдгрд┐ рдлрд╛рдВрджреНрдпрд╛ рдЕрд╕рддрд╛рдд, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЗрддрд░ рд╢рд╛рдЦрд╛ рдЕрд╕реВ рд╢рдХрддрд╛рдд, рдЗрддреНрдпрд╛рджреА. рд░реВрдЯ рдЖрдгрд┐ рд╢рд╛рдЦрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЕрд╕рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ " ╨б:// " рдореВрд│ рдЕрд╕реВ рд╢рдХрддреЗ. рдпрд╛рдд рджреЛрди рд╢рд╛рдЦрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ: " C://Downloads " рдЖрдгрд┐ " C://Users ". рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦреЗрдЪреНрдпрд╛ рджреЛрди рд╢рд╛рдЦрд╛ рдЖрд╣реЗрдд: " C://Downloads/Pictures ", " C://Downloads/Video ", " C://Users/JohnSmith ", " C://Users/Pudge2005". рдЖрдгрд┐ рдпрд╛ рд╢рд╛рдЦрд╛рдВрдЪреНрдпрд╛ рдмрджрд▓реНрдпрд╛рдд рдЗрддрд░ рд╢рд╛рдЦрд╛ рдЖрд╣реЗрдд, рдЗрддреНрдпрд╛рджреА рдЖрдгрд┐ рдореНрд╣рдгреВрдирдЪ рдЖрдкрдг рддреНрдпрд╛рд▓рд╛ рдЭрд╛рдб рдореНрд╣рдгрддреЛ. рд▓рд┐рдирдХреНрд╕рд╡рд░, рд░рдЪрдирд╛ рд╕рдорд╛рди рдЖрд╣реЗ, рдкрд░рдВрддреБ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд░реВрдЯ рдЖрд╣реЗ . рдЖрддрд╛ рдлрд╛рдЗрд▓реНрд╕, рдкрде - 2рдХрд▓реНрдкрдирд╛ рдХрд░рд╛ рдХреА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд░реВрдЯ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдкрд╛рд╕реВрди рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. , рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдлреЛрд▓реНрдбрд░реНрд╕ рдЖрдгрд┐ рд╕рдмрдлреЛрд▓реНрдбрд░реНрд╕рдордзреВрди рдЪрд╛рд▓рд╛, рдЖрдгрд┐ рдХрд╛рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдордЧреНрд░реА рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдпрд▓реА рд╢реЛрдзрд╛. рдЖрдореНрд╣реА "рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реА рд╣реА рдлрд╛рдИрд▓ рдЖрд╣реЗ!" рдУрд│ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рд╢реЛрдзреВ рдЖрдореНрд╣реА "testFolder" рдлреЛрд▓реНрдбрд░ рдШреЗрдК, рдЬреЗ рдЪрд╛рд▓реВ рдЖрд╣реЗ. рдбреЗрд╕реНрдХрдЯреЙрдк, рд░реВрдЯ рдбрд┐рд░реЗрдХреНрдЯреНрд░реА рдореНрд╣рдгреВрди. рдпреЗрдереЗ рддреНрдпрд╛рдЪреА рд╕рд╛рдордЧреНрд░реА рдЖрд╣реЗ: рдлрд╛рдЗрд▓реНрд╕, рдкрде - 3рд╕реНрддрд░1-рдП рдЖрдгрд┐ рд▓реЗрд╡реНрд╣рд▓1-рдмреА рдлреЛрд▓реНрдбрд░реНрд╕рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдлреЛрд▓реНрдбрд░реНрд╕ рдЕрд╕рддрд╛рдд: рдлрд╛рдЗрд▓реНрд╕, рдкрде - 4рдлрд╛рдЗрд▓реНрд╕, рдкрде - 5рдпрд╛ "рд╕реЗрдХрдВрдб рд▓реЗрд╡реНрд╣рд▓ рдлреЛрд▓реНрдбрд░реНрд╕" рдордзреНрдпреЗ рдХреЛрдгрддреЗрд╣реА рдлреЛрд▓реНрдбрд░реНрд╕ рдирд╛рд╣реАрдд, рдлрдХреНрдд рд╡реИрдпрдХреНрддрд┐рдХ рдлрд╛рдЗрд▓реНрд╕: рдлрд╛рдЗрд▓реНрд╕, рдкрде - 6рдлрд╛рдЗрд▓реНрд╕, рдкрде - 7рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ 3 рдлрд╛рдЗрд▓реНрд╕рдирд╛ рдЬрд╛рдгреАрд╡рдкреВрд░реНрд╡рдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рддреНрдордХ рдирд╛рд╡реЗ рджрд┐рд▓реА рдЖрд╣реЗрдд: FileWeNeed1.txt, FileWeNeed2.txt, FileWeNeed3.txt. рдпрд╛ рддрдВрддреЛрддрдВрдд рдлрд╛рдИрд▓реНрд╕ рдЖрд╣реЗрдд рдЬреНрдпрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ Java рд╡рд╛рдкрд░реВрди рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рдЖрдореНрд╣реА рд╣реЗ рдХрд╕реЗ рдХрд░реВ? рдлрд╛рдИрд▓ рдЯреНрд░реА рдЯреНрд░реЕрд╡реНрд╣рд░реНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЕрддрд┐рд╢рдп рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрджреНрдзрдд рдЖрдордЪреНрдпрд╛ рдорджрддреАрд▓рд╛ рдпреЗрддреЗ: Files.walkFileTree (). рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ. рдкреНрд░рдердо, рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ FileVisitor. FileVisitorрдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдлрд╛рдИрд▓ рдЯреНрд░реА рдЯреНрд░реЕрд╡реНрд╣рд░реНрд╕ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреА рд╡рд░реНрдгрди рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рд╡рд┐рд╢реЗрд╖рддрдГ, рддрд┐рдереЗрдЪ рдЖрдореНрд╣реА рдлрд╛рдИрд▓рдордзреАрд▓ рдордЬрдХреВрд░ рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдд рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓рд╛ рдордЬрдХреВрд░ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рдареЗрд╡реВ. рдЖрдордЪреЗ рдХрд╕реЗ FileVisitorрджрд┐рд╕рддреЗ рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ:
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;

public class MyFileVisitor extends SimpleFileVisitor<Path> {

   @Override
   public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {

       List<String> lines = Files.readAllLines(file);
       for (String s: lines) {
           if (s.contains("This is the file we need")) {
               System.out.println("We found a file we need!");
               System.out.println(file.toAbsolutePath());
               break;
           }
       }

       return FileVisitResult.CONTINUE;
   }
}
рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдордЪреНрдпрд╛ рд╡рд░реНрдЧрд╛рд▓рд╛ рд╡рд╛рд░рд╕рд╛ рдорд┐рд│рддреЛ SimpleFileVisitor. рд╣рд╛ рдПрдХ рд╡рд░реНрдЧ рдЖрд╣реЗ рдЬреЛ рд▓рд╛рдЧреВ рдХрд░рддреЛ FileVisitor, рдЬреНрдпрд╛рдордзреНрдпреЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлрдХреНрдд рдПрдХ рдкрджреНрдзрдд рдЕрдзрд┐рд▓рд┐рдЦрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ: visitFile(). рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдИрд▓рд╕рд╛рдареА рдХрд╛рдп рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рд╣реЗ рдЖрдореНрд╣реА рдпреЗрдереЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЛ. рдлрд╛рдЗрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЯреНрд░реЕрд╡реНрд╣рд░реНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рддрд░реНрдХрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рдЪреА рд╕реНрд╡рддрдГрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд▓рд┐рд╣рд╛рд╡реА FileVisitor. рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛ рд╡рд░реНрдЧрд╛рдд рдЖрдгрдЦреА 3 рдкрджреНрдзрддреА рд▓рд╛рдЧреВ рдХрд░рд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрддреАрд▓:
  • preVisitDirectory(): рдлреЛрд▓реНрдбрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрд░реНрдХ;

  • visitFileFailed(): рдлрд╛рдЗрд▓рд▓рд╛ рднреЗрдЯ рджрд┐рд▓реА рдЬрд╛рдК рд╢рдХрдд рдирд╕рд▓реНрдпрд╛рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рддрд░реНрдХ (рдЕреЕрдХреНрд╕реЗрд╕ рдирд╛рд╣реА, рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдХрд╛рд░рдгрд╛рдВрдореБрд│реЗ);

  • postVisitDirectory(): рдлреЛрд▓реНрдбрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрд░реНрдХ.

рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрд╢рд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рддрд░реНрдХрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдмрд░реЛрдмрд░ рдЖрд╣реЛрдд SimpleFileVisitor. рдкрджреНрдзрддреАрддреАрд▓ рддрд░реНрдХ visitFile()рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрд╣реЗ: рдлрд╛рдИрд▓рдордзреАрд▓ рд╕рд░реНрд╡ рдУрд│реА рд╡рд╛рдЪрд╛, рддреНрдпрд╛рдордзреНрдпреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реА рд╕рд╛рдордЧреНрд░реА рдЖрд╣реЗ рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛ рдЖрдгрд┐ рддрд╕реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХрдиреНрд╕реЛрд▓рд╡рд░ рдкрд░рд┐рдкреВрд░реНрдг рдорд╛рд░реНрдЧ рдореБрджреНрд░рд┐рдд рдХрд░рд╛. рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдбрдЪрдг рдЖрдгрдгрд╛рд░реА рдПрдХрдореЗрд╡ рдУрд│ рд╣реА рдЖрд╣реЗ:
return FileVisitResult.CONTINUE;
рдЦрд░рдВ рддрд░, рд╣реЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ. рдлрд╛рдЗрд▓ рднреЗрдЯ рджрд┐рд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛рдирдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдордиреЗ рдХрд╛рдп рдХрд░рд╛рд╡реЗ рд╣реЗ рдЖрдореНрд╣реА рдпреЗрдереЗ рдлрдХреНрдд рд╡рд░реНрдгрди рдХрд░рдд рдЖрд╣реЛрдд. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдЖрдореНрд╣рд╛рд▓рд╛ рдЭрд╛рдбрд╛рд╡рд░реВрди рдкреБрдвреЗ рдЬрд╛рдд рд░рд╛рд╣рд╛рдпрдЪреЗ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА CONTINUEрдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбрддреЛ. рдкрд░рдВрддреБ, рд╡реИрдХрд▓реНрдкрд┐рдХрд░рд┐рддреНрдпрд╛, рдЖрдордЪреЗ рдПрдХ рд╡реЗрдЧрд│реЗ рдЙрджреНрджрд┐рд╖реНрдЯ рдЕрд╕реВ рд╢рдХрддреЗ: "рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реА рд╣реА рдлрд╛рдИрд▓" рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдлрд╛рдпрд▓реА рд╢реЛрдзрдгреНрдпрд╛рдРрд╡рдЬреА, рдЕрд╢реА рдлрдХреНрдд рдПрдХ рдлрд╛рдЗрд▓ рд╢реЛрдзрд╛ . рдпрд╛рдирдВрддрд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдорд╛рдкреНрдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдордЪрд╛ рдХреЛрдб рдЕрдЧрджреА рд╕рд╛рд░рдЦрд╛рдЪ рджрд┐рд╕реЗрд▓, рдкрд░рдВрддреБ рдмреНрд░реЗрдХрдРрд╡рдЬреА рдЕрд╕реЗрд▓:
return FileVisitResult.TERMINATE;
рдмрд░рдВ, рдЪрд▓рд╛ рдЖрдордЪрд╛ рдХреЛрдб рдЪрд╛рд▓рд╡реВ рдЖрдгрд┐ рддреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдХрд╛ рддреЗ рдкрд╛рд╣реВ.
import java.io.IOException;
import java.nio.file.*;

public class Main {

   public static void main(String[] args) throws IOException {

       Files.walkFileTree(Paths.get("C:\\Users\\Username\\Desktop\\testFolder"), new MyFileVisitor());
   }
}
рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ:
We found a file we need!
C:\Users\Username\Desktop\testFolder\FileWeNeed1.txt
We found a file we need!
C:\Users\Username\Desktop\testFolder\level1-a\level2-a-a\FileWeNeed2.txt
We found a file we need!
C:\Users\Username\Desktop\testFolder\level1-b\level2-b-b\FileWeNeed3.txt
рдЙрддреНрдХреГрд╖реНрдЯ! рд╣реЗ рдХрд╛рдо рдХреЗрд▓реЗ! SimpleFileVisitor:) рддреБрдореНрд╣реА рд╣реЗ рдЫреЛрдЯреЗ рдЖрд╡реНрд╣рд╛рди рджреЗрдЦреАрд▓ рд╕реНрд╡реАрдХрд╛рд░реВ рд╢рдХрддрд╛: рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╣ рдмрджрд▓рд╛ FileVisitor, рд╕рд░реНрд╡ 4 рдкрджреНрдзрддреА рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░рд╛ рдЖрдгрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╕рд╛рдареА рддреБрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдиреЗ рдпрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдкрдг рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рд╣реВ рд╢рдХрддрд╛ рдЬреЛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдХреНрд░рд┐рдпрд╛ рд▓реЙрдЧ рдХрд░рддреЛ: рдлрд╛рдЗрд▓ рдХрд┐рдВрд╡рд╛ рдлреЛрд▓реНрдбрд░рдЪреЗ рдирд╛рд╡ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рд╛. рд╕рдзреНрдпрд╛ рдПрд╡рдвреЗрдЪ. рд▓рд╡рдХрд░рдЪ рднреЗрдЯреВ! :)
рдЯрд┐рдкреНрдкрдгреНрдпрд╛
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирд╡реАрди
  • рдЬреБрдиреЗ
рдЯрд┐рдкреНрдкрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╕рд╛рдИрди рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
рдпрд╛ рдкрд╛рдирд╛рд╡рд░ рдЕрдЬреВрди рдХреЛрдгрддреНрдпрд╛рд╣реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдирд╛рд╣реАрдд