类似java的ls中的格式化输出
我有目录中文件和目录的名称列表,例如:类似java的ls中的格式化输出,java,formatting,output,Java,Formatting,Output,我有目录中文件和目录的名称列表,例如: List<String> list = new ArrayList<Strings>(); /* list of files */ 列的数量取决于文件的数量,列的大小取决于同一列中每个文件或目录名的长度。 如果我知道文件的数量,我会在 但是文件或目录的数量可能是可变的。。 如何操作?获取文件夹中的文件数 File file = new File("D:\\AnyFolder"); if(file.isDirectory()) {
List<String> list = new ArrayList<Strings>(); /* list of files */
列的数量取决于文件的数量,列的大小取决于同一列中每个文件或目录名的长度。
如果我知道文件的数量,我会在
但是文件或目录的数量可能是可变的。。
如何操作?获取文件夹中的文件数
File file = new File("D:\\AnyFolder");
if(file.isDirectory()) {
File[] listFiles = file.listFiles();
System.out.println("Total files in folder : " + listFiles.length );
}
我相信这将满足您的要求:
import java.io.File;
public class Ls {
private static final int NUM_COLUMNS = 3;
private static final int SEPARATING_SPACE_LENGTH = 2;
public static void main(String[] args) {
File file = new File("C:/WINDOWS");
if(file.isDirectory()) {
File[] listFiles = file.listFiles();
list(listFiles);
}
}
private static void list(File[] files) {
int[] maxLength = new int[NUM_COLUMNS];
for (int i = 0; i < files.length; i++) {
int fileLength = files[i].getName().length();
int columnIndex = i % NUM_COLUMNS;
if (maxLength[columnIndex] < fileLength) {
maxLength[columnIndex] = fileLength;
}
}
for (int i = 0; i < files.length; i++) {
String fileName = files[i].getName();
System.out.print(fileName);
for (int j = 0; j < maxLength[i % NUM_COLUMNS] - fileName.length() + SEPARATING_SPACE_LENGTH; j++) {
System.out.print(" ");
}
if ((i + 1) % NUM_COLUMNS == 0) {
System.out.print("\n");
}
}
}
}
导入java.io.File;
公共类Ls{
私有静态final int NUM_COLUMNS=3;
私有静态最终整数分隔空间长度=2;
公共静态void main(字符串[]args){
文件=新文件(“C:/WINDOWS”);
if(file.isDirectory()){
File[]listFiles=File.listFiles();
列表(列表文件);
}
}
私有静态无效列表(文件[]文件){
int[]maxLength=新的int[NUM_列];
对于(int i=0;i
如果不清楚,请告诉我
谢谢,现在好了。在您的案例中,您尝试过什么样的解决方案?我尝试过静态列长和静态列数。但我不知道如何像ls那样动态地完成它。我通常不会将输出格式作为文件系统的一部分,但我也没有看到您任务的措辞,所以我知道什么。。。无论如何,对于这种优化,我认为您需要一些动态编程的应用程序(但自从我上学以来,我就没有做过任何动态编程,所以我无法帮助您了解细节…),我们正在用java实现我们自己的文件系统,作为学校工作。。实际上,我在字符串的ArrayList中有文件名,就像我提到的,我可以得到文件的数量或每个名称的长度,但主要问题是动态输出格式。
import java.io.File;
public class Ls {
private static final int NUM_COLUMNS = 3;
private static final int SEPARATING_SPACE_LENGTH = 2;
public static void main(String[] args) {
File file = new File("C:/WINDOWS");
if(file.isDirectory()) {
File[] listFiles = file.listFiles();
list(listFiles);
}
}
private static void list(File[] files) {
int[] maxLength = new int[NUM_COLUMNS];
for (int i = 0; i < files.length; i++) {
int fileLength = files[i].getName().length();
int columnIndex = i % NUM_COLUMNS;
if (maxLength[columnIndex] < fileLength) {
maxLength[columnIndex] = fileLength;
}
}
for (int i = 0; i < files.length; i++) {
String fileName = files[i].getName();
System.out.print(fileName);
for (int j = 0; j < maxLength[i % NUM_COLUMNS] - fileName.length() + SEPARATING_SPACE_LENGTH; j++) {
System.out.print(" ");
}
if ((i + 1) % NUM_COLUMNS == 0) {
System.out.print("\n");
}
}
}
}