Advertisement
MitrovG

[ОС] - JunskaIO

Mar 30th, 2017
1,084
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.78 KB | None | 0 0
  1. Java I/O (јунска сесија) Problem 3 (0 / 0)
  2. Потребно е да ја имплементирате функцијата manage(String in, String out) која врши организација на текстуалните датотеки (*.dat) од именикот in според нивните привилегии на следниот начин:
  3.  
  4. доколку датотеката има привилегии за запишување тогаш таа треба да се премести во out именикот. При преместувањето, во конзола испечатете pomestuvam и апсолутното име на датотеката која се копира.
  5.  
  6. доколку датотеката нема привилегии за запишување тогаш нејзината содржина додадете ја на крај од датотеката writable-content.txt во resources именикот. При додавањето, во конзола испечатете dopisuvam и апсолутното име на датотеката. Сметајте дека овие датотеки може да бидат многу поголеми од физичката меморија на компјутерот.
  7.  
  8. доколку датотеката е скриена (hidden), тогаш избришете ја од in именикот, и во конзола испечатете zbunet sum и апсолутното име на датотеката.
  9.  
  10. Доколку in именикот не постои, испечатете на екран ne postoi.
  11.  
  12. Доколку out именикот веќе постои, избришете ја неговата содржина. Претпоставете дека во out именикот има само датотеки.
  13.  
  14.  
  15.  
  16. import java.io.File;
  17. import java.io.FileInputStream;
  18. import java.io.FileOutputStream;
  19. import java.io.FilenameFilter;
  20. import java.io.IOException;
  21. import java.io.InputStream;
  22. import java.io.OutputStream;
  23.  
  24. public class JunskaIO {
  25.    
  26.     public static final String APPEND_FILE = "./resources/writable-content.txt";
  27.    
  28.     public void manage(String in, String out) throws IOException {
  29.        
  30.         File inFile = new File(in);
  31.         File outFile = new File(out);
  32.         DatFilter filter = new DatFilter();
  33.        
  34.         if (!inFile.exists()) {
  35.             System.out.println("Ne postoi!");
  36.             return;
  37.         }
  38.        
  39.         if (outFile.exists()) {
  40.             deleteContent(out);
  41.         }
  42.        
  43.         File [] files = inFile.listFiles(filter);
  44.        
  45.         for (File contentFile : files) {
  46.            
  47.             if (contentFile.canWrite()) {
  48.                 moveIt(contentFile,outFile);
  49.             }
  50.            
  51.             else if (!contentFile.canWrite()) {
  52.                 System.out.println("dopisuvam " + contentFile.getAbsolutePath());
  53.                 append(contentFile);
  54.             }
  55.            
  56.             else if (contentFile.isHidden()) {
  57.                 System.out.println("zbunet sum " +  contentFile.getAbsolutePath());
  58.                 contentFile.delete();
  59.             }
  60.            
  61.         }
  62.        
  63.        
  64.     }
  65.    
  66.     public void append(File file) throws IOException {
  67.        
  68.        
  69.         try (InputStream in = new FileInputStream(file);
  70.                 OutputStream out = new FileOutputStream(APPEND_FILE,true)) {
  71.            
  72.             int c;
  73.            
  74.             while ((c = in.read()) != -1)
  75.                 out.write(c);
  76.         }
  77.        
  78.     }
  79.    
  80.     public void moveIt(File file, File parent) {
  81.        
  82.         File newFile = new File(parent,file.getName());
  83.         System.out.println("pomestuvam" + file.getAbsolutePath());
  84.         file.renameTo(newFile);
  85.        
  86.     }
  87.    
  88.     private void deleteContent(String file) {
  89.        
  90.         File f = new File(file);
  91.         File [] files = f.listFiles();
  92.        
  93.         for (File contentFile : files)
  94.             contentFile.delete();
  95.     }
  96.  
  97. }
  98.  
  99. class DatFilter implements FilenameFilter {
  100.    
  101.     @Override
  102.     public boolean accept(File dir, String name) {
  103.        
  104.         File file = new File(dir,name);
  105.        
  106.         return file.isFile() && name.endsWith(".dat");
  107.        
  108.     }
  109.    
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement