我正在寻找Java7的新功能.我发现一个是 try-with-resources Statement.任何人都可以告诉我它究竟意味着什么?我们应该使用它的原因和位置,以及我们可以利用此功能的地方?即使是try声明也没有catch阻止让我感到困惑.
我对flush和close方法感到困惑.在我的代码中,我总是关闭我的FileOutputStream对象.但我想知道如果我必须在这里使用flush方法,我可以在哪里使用它?
我将编写一个重复下载4或5个文件的项目.我将编写一个方法(用于下载文件),我的方法将循环并重复下载文件.我的方法将有这样的代码.
该close方法是否调用flush,或者在关闭之前是否必须使用flush?
try {
InputStream inputStream = con.getInputStream();
FileOutputStream outputStream = new FileOutputStream("C:\\programs\\TRYFILE.csv");
int bytesRead = -1;
byte[] buffer = new byte[4096];
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} catch(Exception e) {
//
} finally {
outputStream.close();
inputStream.close();
}
Run Code Online (Sandbox Code Playgroud)
请注意,代码运行良好:它成功下载文件.但我不确定使用flush.
我在close()之前读了这个问题使用flush(),接受的答案是这只意味着你遵循模式.
就像BufferedWriter #close ()或FilterOutputStream.#close(),如果所有缓冲的Stream/Writer都会flush()在我们调用的时候调用它close(),如果我们(开发人员和将要审查代码的开发人员)都知道这一点,那么我们真的还需要这个吗?如果是的话,原因是什么?
我正在做一个实验室,我们必须读取外部文件,对数据进行一些统计,然后使用统计信息创建和写入新文件.我的程序中的所有内容都可以工作,除了编写文件,我无法理解为什么我的方法不起作用.
BufferedWriter writer;
public void writeStats(int word, int numSent, int shortest, int longest, int average)
{
try
{
File file = new File("jefferson_stats.txt");
file.createNewFile();
writer = new BufferedWriter(new FileWriter(file));
writer.write("Number of words: " + word );
writer.newLine();
writer.write("Number of sentences: " + numSent );
writer.newLine();
writer.write("Shortest sentence: " + shortest + " words");
writer.newLine();
writer.write("Longest sentence: " + longest + " words");
writer.newLine();
writer.write("Average sentence: " + average + " words");
}
catch(FileNotFoundException e)
{
System.out.println("File Not Found");
System.exit( 1 …Run Code Online (Sandbox Code Playgroud) 这是一个代码片段,但基本上我想要做的是从名为'listings.txt'的文件中读取并写入名为'overview.txt'的文件.我想从'listings.txt'中取出信息并将它们按原样放入'overview.txt'中(稍后我将弄清楚其余部分).
创建文件'overview.txt'并显示循环遍历文件'listings.txt'并写入'overview.txt'.但是,一旦我打开文件'overview.txt',它就是空的.
有人可以通过快速浏览我的代码并发现错误的东西吗?
package yesOverview;
import java.io.BufferedReader;
import java.io.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class yesOverview {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String strInput = "foo.bar";
System.out.print("Please enter the listings file (the full path to the file): ");
strInput = input.next();
//This makes sure that the inputed file is listings.txt as required for KET1 task 2
while (strInput.contains("listings.txt") == false) {
System.out.print("Incorrect file. Please enter listings …Run Code Online (Sandbox Code Playgroud) 我试图从获取输入JOptionPane并存储什么用户输入到使用文本文件FileWriterclass.To确保从用户输入被存储在什么输入我写了一个System.out和显示我在的JOptionPane类型.不幸的是,当我打开.txt文件时,我输入的内容就出现了!顺便说一句,我输入的文件路径是正确的.
这是我的代码.帮我!
String playername = JOptionPane.showInputDialog("What Will Be Your Character's Name?");
System.out.println(playername);
try {
FileWriter charectersname = new FileWriter("/Users/AlecStanton/Desktop/name.txt/");
BufferedWriter out = new BufferedWriter(charectersname);
out.write(playername);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 所以我编写了一个程序,假设将两个LinkedList的内容写入格式的文本文件中
"标题行1"
"标题行2"
"标题行3"
x1 y1
x2 y2
x3 y3
...
x1023 y1023
这是主要的编写代码:
LinkedList<Double> xVal;
LinkedList<Double> yVal;
LinkedList<String> header;
Analize test;
Scanner scan = new Scanner(System.in);
FileWriter fstream;
BufferedWriter out;
int i=1;
test = new Analize(i);
test.addData();
test.calculate();
//Writing ModY
fstream = new FileWriter("BLOCK " +i+"_ModY.txt");
out = new BufferedWriter(fstream);
header = test.getHeader();
xVal=test.getXList();
yVal=test.getYListMod();
//Write Header
out.write(header.get(0)+"_modY");out.newLine();
out.write(header.get(1));out.newLine();
out.write(header.get(2));out.newLine();
for(int j=0;j<xVal.size();j++)
{
double x=xVal.get(j);
double y=yVal.get(j);
out.write(x+"\t"+y+" "+j);out.newLine();
//test code
System.out.println(xVal.get(j)+" "+yVal.get(j)+" "+j);
//System.out.println(j);
}
Run Code Online (Sandbox Code Playgroud)
真烦人的是测试代码行:System.out.println(xVal.get(j)+""+ yVal.get(j)+""+ j); …
我有以下代码:
CSVmaker(LinkedList data) {
String [] myLines = makeStrings(data);
// for (int k = 0; k<myLines.length; k++)
// System.out.println(myLines[]);
this.file = new File("rawdata.csv");
try {
BufferedWriter buff = new BufferedWriter(new FileWriter(file));
for (int i = 0; i<myLines.length; i++){
buff.write(myLines[i]);
buff.newLine();
System.out.println("done");
}
} catch (IOException ex) {
System.out.println("except");
}
}
Run Code Online (Sandbox Code Playgroud)
不,我检查了myLines的内容,这些是正确的.
另外,我得到的印刷品就像我应该的那样经常打印"完成".csv已创建.
但是,如果我手动打开它,它是空的.
这可能是什么原因?
我正在使用此代码写入java中的文件.它一直有效,我100%肯定它的权利.但仍然没有写入文件.我甚至没有收到错误.
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class writetofile {
public static void main(String [] args){
FileWriter fw;
try {
fw = new FileWriter("testfile.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("this is test");
bw.write("this is test");
bw.write("this is test");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
可能是其他问题吗?
我试图将值(在文本区域中键入)存储到txt文件中.以下代码正在创建program.txt文件,但数据未写入其中.我究竟做错了什么?
另外,如果我想在用户指定的.txt文件中保存这些值,怎么办呢?
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
try {
o = new BufferedWriter(new FileWriter("program.txt"));
o.write(t1.getText());
o.write(",");
o.write(t2.getText());
o.write(",");
o.write(t3.getText());
o.write(",");
o.write(t4.getText());
o.write(",");
o.write(t5.getText());
o.write(",");
o.write(t6.getText());
o.write(",");
o.write(t7.getText());
o.write(",");
}
catch (IOException e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 在下面的程序中,循环迭代1000次,我使用FileWriter在文件中写入所有条目,但不幸的是程序最终只在文件中写入510(有时是415,有时是692,总是少于1000)条目,但循环迭代1000次.
import java.io.* ;
import java.util.*;
public class DemoWriter {
public static void main(String[] args) throws Exception {
List<String> receiverList = new ArrayList<String>() ;
receiverList.add("abc@gmail.com") ;
receiverList.add("pqr@ibibo.com") ;
receiverList.add("xyz@gmail.com") ;
FileWriter fw = new FileWriter("a.txt") ;
BufferedWriter bw = new BufferedWriter(fw) ;
int size = receiverList.size() ;
String str ;
int count = 0 ;
for(int i = 1 ; i <= 1000 ; ++i){
str = receiverList.get( (int) (Math.random() * size) ) + "\n" ;
bw.write(++count + ".> " …Run Code Online (Sandbox Code Playgroud) 我正在使用BufferedWriter将一些数据写入文本文件.它比使用ODBC写入Access更快.代码看起来像这样:
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(filePath), true));
Run Code Online (Sandbox Code Playgroud)
确实是使BufferedWriter追加,而不是覆盖.
bw.append(
country + "\t" +
scenario + "\t" +
tempStage + "\t" +
year + "\t" +
tempState
);
Run Code Online (Sandbox Code Playgroud)
它在以前的项目中对我有用.新问题:它只是在线中间扯出来.这是一个很好的路线:
SultanateOfBrunei BeeBeeScenario Other 2019
Run Code Online (Sandbox Code Playgroud)
最后一行通常如下所示:
SultanateOfBrunei BeeBeeScenario Other 2019 Nondyna
Run Code Online (Sandbox Code Playgroud)
或Sulta
甚至苏
我输入错误处理代码来忽略像那样奇怪的不完整的行.
这意味着并非所有数据都被写入.我可以放弃一个基准,没问题......但它似乎正在削减更多.模拟运行时间为1990年到2020年底,它通常会在2019年的某个地方出现.增加VM会有所帮助 - 它会进一步发展.但我只有一定的记忆!
任何见解?
谢谢!!