Java 检索使用FileOutputStream从字符串创建的文本文件中的文本格式
我正在生成这样的文本段落:Java 检索使用FileOutputStream从字符串创建的文本文件中的文本格式,java,Java,我正在生成这样的文本段落: >1. this is the first line >1. this is the second line >1. this is the third line >1. this is the fourth line 然后将其存储在字符串中 然后我想把这个字符串输出到一个压缩的文本文档中,它可以正常工作,但是当我打开用FileOutputStream创建的文本文件时,格式就不存在了,你知道如何检索格式吗 代码: 在
>1. this is the first line
>1. this is the second line
>1. this is the third line
>1. this is the fourth line
然后将其存储在字符串中
然后我想把这个字符串输出到一个压缩的文本文档中,它可以正常工作,但是当我打开用FileOutputStream创建的文本文件时,格式就不存在了,你知道如何检索格式吗
代码:
在此处发布代码时遇到问题。。
测试程序:
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class TestZip {
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("c:\\TEMP\\tests.txt"),"UTF-8"));
StringBuffer buffer = new StringBuffer();
String line = br.readLine();
try
{
while(line != null)
{
if(line != null)
{
buffer.append(line + "\n");
}
line=br.readLine();
}
String data = buffer.toString();
br.close();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("c:\\TEMP\\ZippedFile.zip"));
ZipOutputStream zos = new ZipOutputStream(bos);
System.out.println(data);
byte[] b = data.getBytes();
ZipEntry entry = new ZipEntry("TheData.txt");
System.out.println("Zipping.." + entry.getName());
zos.putNextEntry(entry);
zos.write(b, 0, b.length);
zos.closeEntry();
zos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
当我在控制台上打印文本时,文本会按我的要求加上边框,当我检查压缩文本文件时,文本都在一行上
控制台输出:
文本文件结果:
我希望它在文本文件中的显示方式与在控制台中的打印方式完全相同
我以前从未编写过可以读取压缩文本文件的程序,但我尝试了
import java.io.FileInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class TestUnzip {
public static void main (String[] args) {
String unzip = "";
try
{
FileInputStream fin = new FileInputStream("C:\\TEMP\\ZippedFile.zip");
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze;
byte[] bytes = new byte[1024];
ze = zin.getNextEntry();
while ((ze = zin.getNextEntry()) != null)
{
if (zin.read(bytes, 0, bytes.length) != -1)
{
unzip = new String(bytes, "UTF-8");
}
else
{
System.out.println("error");
}
ze = zin.getNextEntry();
}
System.out.println(unzip.toString());
zin.closeEntry();
zin.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
我相信记事本期待windows线路终止。
\r\n
,而不仅仅是\n
尝试在另一个编辑器中打开它,比如Notepad++
您将格式设置称为什么?你期望得到什么?你会得到什么?你是如何读取文件的?提供一个SSCCE。代码有点粗糙,因为我在整个程序中使用了大约5个不同的类(并且不想在这里发布整个内容,太长了),基本上我正在制作一个gui,使用JFileChooser读取3个文本文件,并在文本组件中显示内容,然后我将导入的文件转换为字符串,以便对文本文件执行其他操作,这正是您应该创建并发布SSCCE的原因。在这里发布SSCCE应该不会有任何问题。它应该只创建一个zip文件并读取它。没有GUI,什么都没有。你还没有解释你的问题:你所说的“格式”是什么意思。根据定义,纯文本没有任何格式。忘记你的代码吧。创建一个简单的、基于控制台的程序,该程序从main方法创建一个包含多行文本文件条目的zip文件,然后将其读回。并提供你得到的输出。啊哈哈,那一定是它。。谢谢你让我知道
import java.io.FileInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class TestUnzip {
public static void main (String[] args) {
String unzip = "";
try
{
FileInputStream fin = new FileInputStream("C:\\TEMP\\ZippedFile.zip");
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze;
byte[] bytes = new byte[1024];
ze = zin.getNextEntry();
while ((ze = zin.getNextEntry()) != null)
{
if (zin.read(bytes, 0, bytes.length) != -1)
{
unzip = new String(bytes, "UTF-8");
}
else
{
System.out.println("error");
}
ze = zin.getNextEntry();
}
System.out.println(unzip.toString());
zin.closeEntry();
zin.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}