Java 从一个类到另一个类的变量声明
下面的代码工作正常(单独),我只想将字母[i]值从FindDrive类传递到Ziputils输入文件位置,这样我就可以自动压缩pendrive数据 FindDrive类Java 从一个类到另一个类的变量声明,java,Java,下面的代码工作正常(单独),我只想将字母[i]值从FindDrive类传递到Ziputils输入文件位置,这样我就可以自动压缩pendrive数据 FindDrive类 package com.prosper; import java.io.File; public class FindDrive { /** * Application Entry Point */ public static void main(String[] args) { String[] le
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 */ }
}
}
}
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());
}
}
package.com.prosper;
导入java.io.File;
公共类FindDrive
{
/**
*应用程序入口点
*/
公共静态void main(字符串[]args)
{
字符串[]字母=新字符串[]{“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”};
文件[]驱动器=新文件[letters.length];
boolean[]isDrive=新的boolean[letters.length];
//初始化文件对象和初始驱动器状态
对于(int i=0;i
ZipUtils类
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 */ }
}
}
}
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());
}
}
package.com.prosper;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.zip.ZipEntry;
导入java.util.zip.ZipoutStream;
公共类ZipUtils{
私有列表文件列表;
私有静态最终字符串输出\u ZIP\u FILE=“E:\\appu\\Folder.ZIP”;
私有静态最终字符串SOURCE\u FOLDER=“E:\\appu\\”;//SourceFolder
公共ZipUtils(){
fileList=newarraylist();
}
公共静态void main(字符串[]args){
ZipUtils appZip=新的ZipUtils();
appZip.generateFileList(新文件(源文件夹));
zipIt(输出文件);
}
公共空ZipPit(字符串zipFile){
字节[]缓冲区=新字节[1024];
String source=新文件(source_FOLDER).getName();
FileOutputStream=null;
ZipOutputStream zos=null;
试一试{
fos=新文件输出流(zipFile);
zos=新ZipoutStream(fos);
System.out.println(“输出到Zip:+zipFile”);
FileInputStream in=null;
for(字符串文件:this.fileList){
System.out.println(“添加的文件:“+文件”);
ZipEntry ze=新的ZipEntry(source+File.separator+File);
佐斯·普特内森特里(泽);
试一试{
in=新文件输入流(源文件夹+文件.separator+文件);
内伦;
而((len=in.read(buffer))>0){
写入(缓冲区,0,len);
}
}最后{
in.close();
}
}
zos.closeEntry();
System.out.println(“文件夹成功压缩”);
}捕获(IOEX异常){
例如printStackTrace();
}最后{
试一试{
zos.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
public void generateFileList(文件节点){
//仅添加文件
if(node.isFile()){
add(generateZipEntry(node.toString());
}
if(node.isDirectory()){
String[]subNote=node.list();
用于(字符串文件名:子注释){
generateFileList(新文件(节点、文件名));
}
}
}
私有字符串generateZipEntry(字符串文件){
返回file.substring(SOURCE_FOLDER.length()+1,file.length());
}
}
要将数据从一个类传递到另一个类,可以执行以下操作:
1) 在FindDrive类中创建该类的对象:
ZipUtils utils = new ZipUtils();
2) 将值传递给该类的方法:
utils.zipIt(letter[i])
我已经插入了一些语句,它们创建了ZipUtils类的一个新对象并调用了该方法,但是如果您想在这里提高代码质量,我建议您也研究依赖注入
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 */ }
}
}
}
在ZipUtils中创建一个
String[]letters
字段,为该字段创建一个setter,并将您的letters
数组传递到ZipUtils
类的这个setter实例中。Thnx@IvanPronin作为建议,您可以编辑代码吗?Thanx作为@slal的答案,但您可以编辑代码吗,我在应用更改后出错。这对我会有很大的帮助,好的,我会编辑你的代码并粘贴另一个答案,这样其他人仍然可以查看你的原始问题,但是我将如何在ZipUtils类中传递驱动器位置“private static final String SOURCE\u FOLDER=“:\”;”,你想将驱动器位置传递给哪种方法?我想传递字母[I]FindDrive t0 ZipUtills SOURCE_FOLDER目录中的值,以便代码将压缩pendrive数据