Reputation: 10531
This prints everything one one line. My original text file has different lines. How to still get the content line by line after the file is zipped? I am working on Mac.
public static void main(String[] args) throws IOException {
QuickTest mfe = new QuickTest();
ZipFile zip = new ZipFile("test.txt.zip");
for (Enumeration e = zip.entries(); e.hasMoreElements(); ) {
ZipEntry entry = (ZipEntry) e.nextElement();
System.out.println(entry.getName());
if (!entry.isDirectory()) {
if (FilenameUtils.getExtension(entry.getName()).equals("txt")) {
StringBuilder out = getTxtFiles(zip.getInputStream(entry));
System.out.println(out.toString());
}
}
}
System.out.println("Done");
}
private static StringBuilder getTxtFiles(InputStream in) {
StringBuilder out = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
try {
while ((line = reader.readLine()) != null) {
out.append(line);
}
} catch (IOException e) {
// do something, probably not a text file
e.printStackTrace();
}
return out;
}
Upvotes: 1
Views: 154
Reputation: 11020
Inside your method:
private static StringBuilder getTxtFiles(InputStream in) {
StringBuilder out = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
The following loop:
try {
while ((line = reader.readLine()) != null) {
out.append(line);
}
reads lines but the Java readLine()
method does not append an end-of-line character. You'll need to add a newline (or carriage return for the Mac) to see lines.
try {
while ((line = reader.readLine()) != null) {
out.append(line);
out.append( '\n' );
}
Upvotes: 2