java 开发的问题,如下图,是一个java 写文本文件件

18:14 提问
java中创建一个大小为1M的一个文本文件,如何具体实现代码??求大神代码实现
在java中,创建一个文本文件,然后写入1M的大小内容,然后在读取,可是怎么控制文件大小是1M呢?
按赞数排序
可以这样:
import java.io.*;
class Test {
public static void main(String args[]) throws Exception {
RandomAccessFile f = new RandomAccessFile("d:\\test.txt", "rw");
f.setLength(1024 * 1024);
//设置其大小为1M。
用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!
也可以自己封装写文件的方法,实现控制文件大小,也可以动态代理
通常一个非中文字符占1B 一个中文占2B 你利用这个特性 写入相应的个数就可以了
File file =new File("文件路径及文件名")
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐Java编程(基于图形界面)从文件中读出数据,显示在文本框中_百度知道
Java编程(基于图形界面)从文件中读出数据,显示在文本框中
Java编程1.利用记事本创建一个文本文件,输入若干整数,保存。2.编程实现(基于图形界面):
1)从文件中读出数据,显示在文本框中;
2)创建2个线程(要求实现Runnable接口
1.利用记事本创建一个文本文件,输入若干整数,保存。2.编程实现(基于图形界面):
1)从文件中读出数据,显示在文本框中;
2)创建2个线程(要求实现Runnable接口),分别判断其中的素数和合数,并显示出来。
我有更好的答案
=&new&&&nbsp.JScrollPane.BufferedRimport&nbsp.addActionListener(new&ActionListener()&{&&&public&void&actionPerformed(ActionEvent&s);&&&34&new&JButton(&导入文本&);&!=&&public&class&nbsp.FileNotFoundECalcNumber&18&nbsp.按钮&&JButton&19&+&&\n&&+&nbsp.awt.imp&=&nbsp.io.IOEimport&=&new&BorderLayout());e1)&{&&&&&e1.printStackTrace();&&&&}&catch&(IOException&e2)&{&&&&&e2.printStackTrace();&&&&}&&&}&&});&&JButton&start&=&new&JButton(&启动两个线程并计算&);&&start.addActionListener(new&CalcActionListener());&&JPanel&buttonP&=&new&JPanel();&&buttonP.add(imp);&&buttonP.add(start);&&//&结果&&JPanel&result&=&new&JPanel(new&GridLayout(1,&2));&&JPanel&suPanel&=&new&JPanel();&&suPanel.setBorder(BorderFactory.createTitledBorder(&以下为素数&));&&JPanel&hePanel&=&new&JPanel();&&hePanel.setBorder(BorderFactory.createTitledBorder(&以下为合数&));&&result.add(suPanel);&&result.add(hePanel);&&suText&=&new&JTextArea(4,&25);&&JScrollPane&suScroll&=&new&JScrollPane(suText);&&suText.setBorder(BorderFactory.createBevelBorder(1));&&heText&=&new&JTextArea(4,&25);&&JScrollPane&heScroll&=&new&JScrollPane(heText);&&heText.setBorder(BorderFactory.createBevelBorder(1));&&suPanel.add(suScroll);&&hePanel.add(heScroll);&&//&总&&JPanel&all&=&new&JPanel(new&GridLayout(2,&1,&2,&2));&&all.setBorder(BorderFactory.createTitledBorder(&计算素数和合数&));&&all.add(upper);&&all.add(result);&&this.add(buttonP,&BorderLayout.SOUTH);&&this.add(all,&BorderLayout.CENTER);&&//&this.setSize(400,&300);&&this.pack();&&Toolkit&tool&=&Toolkit.getDefaultToolkit();&&Dimension&screen&=&tool.getScreenSize();&&this.setLocation(screen.width&/&2&-&this.getWidth()&/&2,&screen.height&&&&/&2&-&this.getHeight()&/&2);&&this.setVisible(true);&&this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&}&class&CalcActionListener&implements&ActionListener,&Runnable&{&&public&void&actionPerformed(ActionEvent&e)&{&&&Thread&suThread&=&new&Thread(new&CalcActionListener(),&&su&);&&&Thread&heThread&=&new&Thread(new&CalcActionListener(),&&he&);&&&suThread.start();&&&heThread.start();&&}&&public&void&run()&{&&&String&s&=&in.getText();&&&String[]&arr&=&s.split(&\\s&);&&&StringBuffer&su&=&new&StringBuffer();&&&StringBuffer&he&=&new&StringBuffer();&&&for&(int&i&=&0;&i&&&arr.&i++)&{&&&&boolean&flag&=&&&&&if&(!arr[i].equals(&&)&&&&arr[i]&!=&null)&{&&&&&int&n&=&Integer.valueOf(arr[i]);&&&&&for&(int&j&=&2;&j&&&n;&j++)&{&&&&&&if&(n&%&j&==&0)&{&&&&&&&flag&=&&&&&&&}&&&&&}&&&&&if&(Thread.currentThread().getName().equals(&su&)&&&&&&&&&&flag&==&false)&{&&&&&&su&=&su.append(&&&&+&n);&&&&&}&&&&&if&(Thread.currentThread().getName().equals(&he&)&&&&&&&&&&flag&==&true)&{&&&&&&he&=&he.append(&&&&+&n);&&&&&}&&&&}&&&}&&&if&(Thread.currentThread().getName().equals(&su&))&{&&&&suText.setText(new&String(su));&&&}&else&{&&&&heText.setText(new&String(he));&&&}&&}&}&public&static&void&main(String[]&args)&throws&Exception&{&&UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());&&CalcNumber&c&=&new&CalcNumber();&}}****************************************************************运行结果如下:;&&JPanel&upper&37&nbsp.createBevelBorder(1));&nbsp.java类代码如下;&&&&&while&&JScrollPane(in);in&5&6&32&nbsp,&nbsp.=&new&38&java.&&JScrollPane&inScroll&}&}&catch&nbsp.br.close();&15&JTextArea(4;36&import&javax.swing.JTextAimport&nbsp.Tjava.JTextArea&suT输入框&CalcNumber()&nbsp.//&//&&35&s;JPanel(new&&nbsp.setText(in.getText()&&heT&2021&22&23&24&25&26&27&28&29&3031&((s&=&import&计算素数和合数&);&this.setTitle(&quot.ActionE&1);&&&nbsp.swing.BorderF&&4041&42&43&44&45&46&47&48&49&50****************************************************************CalcNimport&javax.swing.JBimport&try&{&&&&&BufferedReader&br&=&null)&{&&&&&&&import&java.ActionLimport&nbsp.event.io.FileRnew&BufferedReader(new&FileReader(&&&&&&&&d:\\int.txt&17&br.readLine())&33&import&in.setAutoscrolls(true);java.awt.Dimport&&&39&&&13&javax.awt.java.awt.GridL&nbsp。****************************************************************));&&9&1011&&nbsp.UIManager首先建一个文本文件;{&&import&java:int.String&(FileNotFoundException&nbsp.12&nbsp.txt里面的文本如下:1&2&nbsp.JFimport&&nbsp,然后写一个Java类CalcNumber.java.setBorder(BorderF{&nbsp.BorderLimport&14&e)&3&4&&&upper.add(inScroll);&7&8&&16&public&nbsp.JPimport&nbsp:import&import&&JTextArea&extends&JFrame&{&JTextArea&javax,名字为,比如在D盘根目录下;&nbsp
采纳率:53%
getText()+'\n'+content);请输入&);
jtaoutput.equals(&&)){
JOptionPane.showMessageDialog(null.setText(jtaoutput,&quotbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String content=jtainput.getText();
if(content
import java.awt.BorderLimport java.awt.event.ActionEimport java.awt.event.ActionLimport java.io.BufferedRimport java.io.Fimport java.io.FileNotFoundEimport java.io.FileRimport java.io.IOEimport java.util.Simport javax.swing.JBimport javax.swing.JFileCimport javax.swing.JFimport javax.swing.JPimport javax.swing.JScrollPimport javax.swing.JTextApublic class Test extends JFrame implements ActionListener,Runnable { JB JTextA JScrollP Thread prime, F String s1=&素数有:&,s2=&合数有:&; public Test() {
btn=new JButton(&load file...&);
btn.addActionListener(this);
text=new JTextArea();
text.setLineWrap(true);
scroll=new JScrollPane(text);
JPanel p=new JPanel(new BorderLayout());
p.add(btn,&South&);
p.add(scroll,&Center&);
setContentPane(p);
setSize(800,500);
setTitle(&提取素数和合数&);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); } public static void main(String [] args) {
new Test(); } public void actionPerformed(ActionEvent e) {
JFileChooser chooser=new JFileChooser();
chooser.showOpenDialog(this);
file=chooser.getSelectedFile();
writeToText();
(prime=new Thread(this,&prime&)).start();
(composite=new Thread(this,&composite&)).start(); }
public void run() {
if(Thread.currentThread().getName().equals(&prime&)) {
splitPrime();
if(Thread.currentThread().getName().equals(&composite&)) {
splitComposite();
public void writeToText() {
BufferedReader in=new BufferedReader(new FileReader(file));
text.setText(&&);
while((s=in.readLine())!=null) {
text.append(s);
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException ee) {
ee.printStackTrace();
public void splitComposite() {
Scanner sc=new Scanner(text.getText());
for(int i=sc.nextInt();sc.hasNextInt();i=sc.nextInt()) {
int j=i/2;
for(int k=1;k&=j&&i!=2;k++) {
if(k==1) {
if(i%k==0) {
s2+=String.valueOf(i)+&
text.append(&\n\n&+s2); }
public void splitPrime() {
Scanner sc=new Scanner(text.getText());
for(int i=sc.nextInt();sc.hasNextInt();i=sc.nextInt()) {
int j=i/2;
int count=0;
for(int k=1;k&=j&&i!=2;k++) {
if(k==1) {
if(i%k!=0) {
if(k==j&&count==j) {
s1+=String.valueOf(i)+&
if(i==2) {
s1+=String.valueOf(i)+&
text.append(&\n\n&+s1); }}让我很郁闷的是,这个程序判断3的时候老是说不是素数,可是我口算了很多遍都是的啊,其它的要求都满足了!
为您推荐:
其他类似问题
java编程的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。关于文本文档写Java代码的问题_百度知道
关于文本文档写Java代码的问题
现在的Java教科书的开始都是教人用文本文档编写Java代码 然后手动编译么?
反正我开始学的时候是这样?
按照现在的发展,还有意义这么做么?
手动用文本文档编写代码然后手动编译再运行,真的能起到让人了解Java编译机制的作用么?
还是说有什么其它特别的...
我有更好的答案
对于真正的入门来说,确实用文本能大概了解一下是如何运行的,真正到了企业开发,用文本是不太现实的。
我感觉0基础的直接拿记事本儿写代码然后编译,就跟鸭子听雷一样。还是应该有基础了,了解深层编译原理什么的时候再这么试。当然,一般人也不会没事儿研究那个。难道自己写编译器?
文本文档写代码只是让你对代码的基础比较熟一点,到了企业里之后讲究的是效率,肯定使用的是IDE
为您推荐:
其他类似问题
文本文档的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java如何打开文本文件?_百度知道
java如何打开文本文件?
如何打开文件?比如打开test.txt文件如何用
文本模式打开这个文件?
我有更好的答案
;Runtime.getRuntime();\notepad.exe
e:&#92String cmd=&quot.txt &quot.exec(cmd)
采纳率:80%
BufferedInputStream in = new BufferedInputStream(fis)!= -1) {
System.out.println(new String(buffer, 0static void test() throws IOException {
FileInputStream fis = new FileInputStream(&
byte[] buffer = new byte[1024];
int length = -1;
while ((length = in.read(buffer)) ;test,txt&quot, length)).close();
不是在 System.out.println显示内容而是 直接就平常打开txt文件一样 打开,就是在电脑上把txt文件打开
本回答被网友采纳
为您推荐:
其他类似问题
您可能关注的内容
文本文件的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Java读取、写入文件如何解决乱码问题
转载 & & 投稿:lijiao
这篇文章主要介绍了Java读取、写入文件如何解决乱码问题,需要的朋友可以参考下
读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题。首先,明确一点,文本文件与二进制文件的概念与差异。
文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码、ANSI编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。)
因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。
&对于二进制文件,是千万不能使用字符串的,因为字符串默认初始化时会使用系统默认编码,然而,二进制文件因为自定义编码自然与固定格式的编码会有所冲突,所以对于二进制的文件只能采用字节流读取、操作、写入。
&&对于文本文件,因为编码固定,所以只要在读取文件之前,采用文件自身的编码格式解析文件,然后获取字节,再然后,通过指定格式初始化字符串,那么得到的文本是不会乱码的。虽然,二进制文件也可以获取到它的文本编码格式,但是那是不准确的,所以不能同日而语。
具体操作如下:
1)获取文本文件的格式
public static String getFileEncode(String path) {
String charset ="asci";
byte[] first3Bytes = new byte[3];
BufferedInputStream bis =
boolean checked =
bis = new BufferedInputStream(new FileInputStream(path));
bis.mark(0);
int read = bis.read(first3Bytes, 0, 3);
if (read == -1)
if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {
charset = "Unicode";//UTF-16LE
} else if (first3Bytes[0] == (byte) 0xFE && first3Bytes[1] == (byte) 0xFF) {
charset = "Unicode";//UTF-16BE
} else if (first3Bytes[0] == (byte) 0xEF && first3Bytes[1] == (byte) 0xBB && first3Bytes[2] == (byte) 0xBF) {
charset = "UTF8";
bis.reset();
if (!checked) {
int len = 0;
int loc = 0;
while ((read = bis.read()) != -1) {
if (read &= 0xF0)
if (0x80 &= read && read &= 0xBF) //单独出现BF以下的,也算是GBK
if (0xC0 &= read && read &= 0xDF) {
read = bis.read();
if (0x80 &= read && read &= 0xBF)
//双字节 (0xC0 - 0xDF) (0x80 - 0xBF),也可能在GB编码内
} else if (0xE0 &= read && read &= 0xEF) { //也有可能出错,但是几率较小
read = bis.read();
if (0x80 &= read && read &= 0xBF) {
read = bis.read();
if (0x80 &= read && read &= 0xBF) {
charset = "UTF-8";
//TextLogger.getLogger().info(loc + " " + Integer.toHexString(read));
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
bis.close();
} catch (IOException ex) {
private static String getEncode(int flag1, int flag2, int flag3) {
String encode="";
// txt文件的开头会多出几个字节,分别是FF、FE(Unicode),
// FE、FF(Unicode big endian),EF、BB、BF(UTF-8)
if (flag1 == 255 && flag2 == 254) {
encode="Unicode";
else if (flag1 == 254 && flag2 == 255) {
encode="UTF-16";
else if (flag1 == 239 && flag2 == 187 && flag3 == 191) {
encode="UTF8";
encode="asci";// ASCII码
2)通过文件的编码格式读取文件流
* 通过路径获取文件的内容,这个方法因为用到了字符串作为载体,为了正确读取文件(不乱码),只能读取文本文件,安全方法!
public static String readFile(String path){
String data =
// 判断文件是否存在
File file = new File(path);
if(!file.exists()){
// 获取文件编码格式
String code = FileEncode.getFileEncode(path);
InputStreamReader isr =
// 根据编码格式解析文件
if("asci".equals(code)){
// 这里采用GBK编码,而不用环境编码格式,因为环境默认编码不等于操作系统编码
// code = System.getProperty("file.encoding");
code = "GBK";
isr = new InputStreamReader(new FileInputStream(file),code);
// 读取文件内容
int length = -1 ;
char[] buffer = new char[1024];
StringBuffer sb = new StringBuffer();
while((length = isr.read(buffer, 0, 1024) ) != -1){
sb.append(buffer,0,length);
data = new String(sb);
}catch(Exception e){
e.printStackTrace();
log.info("getFile IO Exception:"+e.getMessage());
if(isr != null){
isr.close();
} catch (IOException e) {
e.printStackTrace();
log.info("getFile IO Exception:"+e.getMessage());
3)通过文件指定的格式写入文件
* 按照指定的路径和编码格式保存文件内容,这个方法因为用到了字符串作为载体,为了正确写入文件(不乱码),只能写入文本内容,安全方法
* @param data
将要写入到文件中的字节数据
* @param path
文件路径,包含文件名
* @return boolean
当写入完毕时返回
public static boolean writeFile(byte data[], String path , String code){
boolean flag =
OutputStreamWriter osw =
File file = new File(path);
if(!file.exists()){
file = new File(file.getParent());
if(!file.exists()){
file.mkdirs();
if("asci".equals(code)){
code = "GBK";
osw = new OutputStreamWriter(new FileOutputStream(path),code);
osw.write(new String(data,code));
osw.flush();
}catch(Exception e){
e.printStackTrace();
log.info("toFile IO Exception:"+e.getMessage());
if(osw != null){
osw.close();
}catch(IOException e){
e.printStackTrace();
log.info("toFile IO Exception:"+e.getMessage());
4)对于二进制文件而且内容很少的,例如Word文档等,可以使用如下方式读取、写入文件
* 从指定路径读取文件到字节数组中,对于一些非文本格式的内容可以选用这个方法
* @param path
文件路径,包含文件名
* @return byte[]
文件字节数组
public static byte[] getFile(String path) throws IOException {
FileInputStream stream=new FileInputStream(path);
int size=stream.available();
byte data[]=new byte[size];
stream.read(data);
stream.close();
* 把字节内容写入到对应的文件,对于一些非文本的文件可以采用这个方法。
* @param data
将要写入到文件中的字节数据
* @param path
文件路径,包含文件名
* @return boolean isOK 当写入完毕时返回
* @throws Exception
public static boolean toFile(byte data[], String path) throws Exception {
FileOutputStream out=new FileOutputStream(path);
out.write(data);
out.flush();
out.close();
以上就是本文的全部内容,希望对大家的学习有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 java 读取文本文件 的文章

 

随机推荐