יום חמישי, 18 בינואר 2018

עבודה עם קבצי טקסט, הצפנה וקבלת מספר פרמטרים לא קבוע (Java)

עבודה עם קבצים בג'אווה

בלי להכביר במילים (אהמ מה שלא הבנתם תבדקו בגוגל כידוע), המחלקה הבאה מכילה מספר פונקציות שימושיות לעבודה עם קבצים:





תוכלו לצפות בקוד כאן:









או בבלוג (מדובר באותו קוד):

import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author noamn
 */


// I need to read:  https://stackoverflow.com/questions/1625234/how-to-append-text-to-an-existing-file-in-java
public class WorkWithFiles {
// תזינו את הנתיב של הקובץ שלכם
    private final static String PathOfUserDetailsFile = 
                "C:\\Users\\noamn\\Desktop\\ארבע בשורה\\תוכנית בגאווה\\V0.0.2\\Four In A Line\\src\\Files\\UserNameAndPasswordForLogin.txt";



//            URL url = WorkWithFiles.class.getResource("/Files/UserNameAndPasswordForLogin.txt");
// need utf8
// See:  https://stackoverflow.com/questions/35132693/set-encoding-as-utf-8-for-a-filewriter
    
    
    

    // write to text file
    // return true if writing succeeded
// שימו לב שכך מקבלים מספר לא קבוע של פרמטרים בג'אווה
    public static Boolean writeStringsToTextFile(String... MyStrings) { // params in java
        BufferedWriter bw = null;
        FileWriter fw = null;

        try {
            // this punction also delete the txt file content. to append - add true parameter.
// אם היינו רוצים שהטקסט ששומרים עכשיו בקובץ יתווסף לטקסט הקיים ולא ידרוס אותו, היינו כותבים:
(fw = new FileWriter(PathOfUserDetailsFile, true
            fw = new FileWriter(PathOfUserDetailsFile);


            bw = new BufferedWriter(fw);
            for (String line : MyStrings) {
// כך מכניסים את המחרוזות אל הקובץ, ויורדים שורה בסוף כל מחרוזת
                bw.write(line);
                bw.newLine(); 

            }
        } catch (IOException e) {
            // e.printStackTrace();
            return false;
        } finally {
            try {
                if (bw != null) {
                    bw.close();
                }
                if (fw != null) {
                    fw.close();
                }
            } catch (IOException ex) {
                //ex.printStackTrace();
            }
        }

        return true;
    }
    
    
    
    // The function fill the given Strings-ArrayList with all the lines in the text file
    // return true if reading succeeded
    public static Boolean readStringsFromTextFile(ArrayList<String> OutStrings){
        if (OutStrings == null) return false;
        
        
        FileReader fr = null;
        BufferedReader br = null;
        try {
            fr = new FileReader(PathOfUserDetailsFile);
            br = new BufferedReader(fr);
            
            String line;
            while((line = br.readLine()) != null) {
                OutStrings.add(line);
            }
        } catch (FileNotFoundException e) {
            return false;
        } catch (IOException e) {
            return false;
        }finally {
            try {
                if (br != null) {
                    br.close();
                }
                if (fr != null) {
                    fr.close();
                }
            } catch (IOException ex) {
                //ex.printStackTrace();
            }
        }
        
        return true;
    }


    
    // Create a hash password
    // if failed return null
    public static String makeEncryptedPassword(String plainTextPassword){ 
        if(plainTextPassword == null) return null;
        if(plainTextPassword.length() == 0) return null;

        MessageDigest messageDigest=null;
        try {
            messageDigest = MessageDigest.getInstance("SHA-256");
        } catch (NoSuchAlgorithmException ex) {
            return null;
        }
        messageDigest.update(plainTextPassword.getBytes());
        return new String(messageDigest.digest());
    }

    
    
}
שימו לב שהקוד עוד יתעדכן וישתפר בעתיד.













דוגמאות לשימוש והפעלה של הפונקציות:

        
        String encryptedString = WorkWithFiles.makeEncryptedPassword("1q@2345nB62");
        
        if(WorkWithFiles.writeStringsToTextFile("NoanNol", encryptedString)){
            System.out.println("Writing Succeeded");
        }
        else{
            System.out.println("Writing NOT Succeeded");
        }
        
        
        ArrayList<String> LinesInTxtFile = new ArrayList<String>();
        if(WorkWithFiles.readStringsFromTextFile(LinesInTxtFile)){
            System.out.println("Reading Succeeded");
        }
        else{
            System.out.println("Reading NOT Succeeded");
        }
       
        for(String str : LinesInTxtFile)
            System.out.println(str);






לקריאה נוספת:  Java - Files and I/O

אין תגובות:

הוסף רשומת תגובה