簡體   English   中英

從一類到另一類的變量聲明

[英]Variable declaration from one class to another

下面的代碼工作正常(單獨),我只想將FindDrive類中的letter [i]值傳遞給Ziputils輸入文件位置,以便我可以自動壓縮pendrive數據。

FindDrive類

package com.prosper;

import java.io.File;


public class FindDrive
{
/**
 * Application Entry Point
 */
public static void main(String[] args)
    {
    String[] letters = new String[]{ "A", "B", "C", "D", "E", "F", "G", "H", "I"};
    File[] drives = new File[letters.length];
    boolean[] isDrive = new boolean[letters.length];

    // init the file objects and the initial drive state
    for ( int i = 0; i < letters.length; ++i )
        {
        drives[i] = new File(letters[i]+":/");

        isDrive[i] = drives[i].canRead();
        }

     System.out.println("FindDrive: waiting for devices...");

     // loop indefinitely
     while(true)
        {
        // check each drive 
        for ( int i = 0; i < letters.length; ++i )
            {
            boolean pluggedIn = drives[i].canRead();

            // if the state has changed output a message
            if ( pluggedIn != isDrive[i] )
                {
                if ( pluggedIn ){
                    System.out.println("Drive "+letters[i]+" has been plugged in");
                }
                else
                    System.out.println("Drive "+letters[i]+" has been unplugged");

                isDrive[i] = pluggedIn;
                }
            }


        // wait before looping
        try { Thread.sleep(100); }
        catch (InterruptedException e) { /* do nothing */ }

        }
    }

}

ZipUtils類

package com.prosper;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipUtils {

    private List <String> fileList;
    private static final String OUTPUT_ZIP_FILE = "E:\\appu\\Folder.zip";
    private static final String SOURCE_FOLDER = "E:\\appu\\"; //SourceFolder 

    public ZipUtils() {
        fileList = new ArrayList < String > ();
    }

    public static void main(String[] args) {
        ZipUtils appZip = new ZipUtils();
        appZip.generateFileList(new File(SOURCE_FOLDER));
        appZip.zipIt(OUTPUT_ZIP_FILE);
    }

    public void zipIt(String zipFile) {
        byte[] buffer = new byte[1024];
        String source = new File(SOURCE_FOLDER).getName();
        FileOutputStream fos = null;
        ZipOutputStream zos = null;
        try {
            fos = new FileOutputStream(zipFile);
            zos = new ZipOutputStream(fos);

            System.out.println("Output to Zip : " + zipFile);
            FileInputStream in = null;

            for (String file: this.fileList) {
                System.out.println("File Added : " + file);
                ZipEntry ze = new ZipEntry(source + File.separator + file);
                zos.putNextEntry(ze);
                try {
                    in = new FileInputStream(SOURCE_FOLDER + File.separator + file);
                    int len;
                    while ((len = in .read(buffer)) > 0) {
                        zos.write(buffer, 0, len);
                    }
                } finally {
                    in.close();
                }
            }

            zos.closeEntry();
            System.out.println("Folder successfully compressed");

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                zos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public void generateFileList(File node) {
        // add file only
        if (node.isFile()) {
            fileList.add(generateZipEntry(node.toString()));
        }

        if (node.isDirectory()) {
            String[] subNote = node.list();
            for (String filename: subNote) {
                generateFileList(new File(node, filename));
            }
        }
    }

    private String generateZipEntry(String file) {
        return file.substring(SOURCE_FOLDER.length() + 1, file.length());
    }
}

要將數據從一個類傳遞到另一類,您可以執行以下操作:

1)在FindDrive類中創建該類的對象:

 ZipUtils utils = new ZipUtils();

2)將值傳遞給該類的方法:

utils.zipIt(letter[i])

我插入了一些語句,這些語句創建ZipUtils類的新對象並調用該方法,但是,如果您想在此處提高代碼質量,我建議您也查看Dependency Injection。

package com.prosper;
import java.io.File;

public class FindDrive {
/**
 * Application Entry Point
 */
    public static void main(String[] args) {
        String[] letters = new String[] {"A", "B", "C", "D", "E", "F", "G", 
"H", "I"};
        ZipUtils utils;
        File[] drives = new File[letters.length];
        boolean[] isDrive = new boolean[letters.length];

        // init the file objects and the initial drive state
        for (int i = 0; i < letters.length; ++i) {
             drives[i] = new File(letters[i] + ":/");
             isDrive[i] = drives[i].canRead();
        }
        System.out.println("FindDrive: waiting for devices...");

        // loop indefinitely
        while (true) {
            // check each drive
            for (int i = 0; i < letters.length; ++i) {
                boolean pluggedIn = drives[i].canRead();
                utils = new ZipUtils();
                utils.changeDirectory(letters[i]);
                // if the state has changed output a message
                    if (pluggedIn != isDrive[i]) {
                        if (pluggedIn) {
                             System.out.println("Drive " + letters[i] + " has been plugged in");
                        } else {
                             System.out.println("Drive " + letters[i] + " has been unplugged");
                        }
                        isDrive[i] = pluggedIn;
                   }
            }

           // wait before looping
           try {
               Thread.sleep(100);
           } catch (InterruptedException e) { /* do nothing */ }
       }
   }
}

要在聲明后對SOURCE_FOLDER進行更改,您需要確保其不是常數,即它不是最終的。 在ZipUtils中添加方法:

 private static String source_folder = "E:\\appu\\"; //SourceFolder 

 public void changeDirectory(String zip) {
     source_folder = zip + ":\\";
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM