有关Java 文件读取中换行的问题

有关Java 文件读取中换行的问题,第1张

Java读取文件涉及的换行符问题

首先需要把数据库中的多列导出成txt文本,然后java代码读取该文件,通过readline读取每一行,再通过"\t" 分割spit每一列数据,分别对其进行处理。

结果读取每一行的时候发现本来在一行的数据分成了两行,查找原因发现,原来是数据库列中的数据本身已存在换行符,这就需要在导出数据的时候对该列进行一个去除换行符的 *** 作。

REPLACE(title, "\r\n", "")

解决办法如下:

java \r\n 或者 \n

mysql,javascript \r\n

windows下的文本换行符是 \r\n

unix下的文本换行符是 \n

不同系统的换行符根本没法通用的。只能是自己根据系统定义下

可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:

OutputStreamWriter pw = null;//定义一个流

pw = new OutputStreamWriter(new FileOutputStream(“D:/testdoc”),"GBK");//确认流的输出文件和编码格式,此过程创建了“testtxt”实例

pwwrite("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write

pwclose();//关闭流

备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

答:因为调用的是setText()方法,该方法会覆盖掉之前的文字,显示最后一次设置的文字

如果是JTextArea组件, 会有append(String str)方法,可以追加文字

JTextArea jta= new JTextArea();

jtasetText("123");//设置文字

jtaappend("字符串");//追加文字

如果是 JTextPane 组件, 那么可以通过先获取文字,然后再设置文字的方式,来实现

JTextPane textPane = new JTextPane();

textPanesetText(textPanegetText()+"新字符串");

所以,你的代码需要修改成下面这样

btnNewButton_1addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

for (int i = 1; i <= 9; i++) {

for (int j = 1; j <= i; j++) {

// 先读取之前的文字,然后追加上现在的文字

textPanesetText(textPanegetText()+j + "" + i + "=" + i  j + "\t");

}

// 先读取之前的文字,然后追加上现在的文字

textPanesetText(textPanegetText()+"\n");

}

}

});

效果图

1: 如果你觉得不够美观, 你可以加宽你的窗口和JTextPane组件

2: 如果你觉得循环太多次 。都要setText() ,那么也可以使用字符串拼接好了,只设置一次就可以了。

3: JDK版本5以后已经优化了字符串的拼接速度。所以使用 + 链接字符串,或者使用StringBuffer然后append效果差不多。

4: 你的类名是action 是不推荐的, 因为类名推荐首字母大写,并且使用有意义的名词比较好,比如MyFrame等。

5: 代码从风格上来看,比较乱,应该是使用windowbuilder 自动生成的代码。 自己写,其实更简单,并且很整洁。

6:  这段代码采用的是绝对布局 setLayout(null); 这样的布局,在不同的 *** 作系统以及不同的运行环境下,显示的效果会有差别,并且也不能很好的缩放窗口,不推荐使用。

完整的参考代码和注释如下:

下面的代码纯手打, 一般的窗口都可以参考下面的写法书写

import javaawt;

import javaxswing;

import javaawtevent;

//本类继承自JFrame实现了ActionListener接口

public class MyFrame extends JFrame implements ActionListener {

//获取当前系统的换行符。因为不同系统可能是\n \n\r 。。等多种情况

public static final String NEW_LINE = SystemgetProperty("lineseparator");

//文字面板

JTextPane jtp;

// 构造器

public MyFrame() {

//窗口中间的文字面板

jtp = new JTextPane();

add(jtp, BorderLayoutCENTER);// 把文本面板放到中间

//窗口南面的按钮面板

JPanel jps = new JPanel();

JButton jbShow = new JButton("计算");

jbShowaddActionListener(this);// 给按钮添加响应

JButton jbClose = new JButton("关闭");

jbCloseaddActionListener(this);// 给按钮添加响应

jpsadd(jbShow);

jpsadd(jbClose);

add(jps, BorderLayoutSOUTH);// 把按钮面板加入到窗口的南面

//窗口属性的设置

setTitle("乘法表");//窗口标题

setSize(680, 300);//窗口宽 高

setLocationRelativeTo(null);//窗口居中(屏幕中央)

setDefaultCloseOperation(EXIT_ON_CLOSE);//点击窗口右上角的按钮时结束程序

}

// ActionListener接口需要实现actionPerformed方法 。可以对多个按钮点击做出响应

@Override

public void actionPerformed(ActionEvent e) {

String cmd = egetActionCommand();// 按钮命令

if (cmdequals("关闭")) {// 如果是关闭按钮被点击

Systemexit(0);

} else if (cmdequals("计算")) {// 如果是计算按钮被点击

StringBuffer sb = new StringBuffer();//jdk5以后 的版本使用字符串的 +链接,效率也高

for (int i = 1; i <= 9; i++) {

for (int j = 1; j <= i; j++) {

sbappend(j + "" + i + "=" + i  j + "\t");

}

sbappend(NEW_LINE);

}

jtpsetText(sbtoString());

}

}

// main方法

public static void main(String[] args) {

EventQueueinvokeLater(new Runnable() {

public void run() {

try {

new MyFrame()setVisible(true);// 实例化窗口并可见

} catch (Exception e) {

eprintStackTrace();

}

}

});

}

}

特殊字符的表示方法::

1、\t 空格 ('\u0009')

2、\n 换行 ('\u000A')

3、\\ 反斜杠

4、\r 回车 ('\u000D')

5、\d 数字等价于[0-9]

6、\D 非数字等价于[^0-9]

7、\s 空白符号 [\t\n\x0B\f\r]

8、\S 非空白符号 [^\t\n\x0B\f\r]

9、\w 单独字符 [a-zA-Z_0-9]

10、\W 非单独字符 [^a-zA-Z_0-9]

11、\f 换页符

12、\e Escape

扩展资料:

Java

1、Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

2、Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

参考资料来源:百度百科-Java

以上就是关于有关Java 文件读取中换行的问题全部的内容,包括:有关Java 文件读取中换行的问题、java代码输入输出流写word,不同系统间换行符该怎么特殊处理、java JTextPane设置问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10070086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存